UNION子句

UNION计算多个SELECT语句返回行集合的并集。UNION内部的SELECT语句必须拥有相同数量的列,列也必须拥有相似的数据类型。同时,每条SELECT语句中的列的顺序必须相同。

语法格式

  • UNION:结果中如果出现相同的值,仅保留一个。

1. SELECT column_name(s) FROM table_name1 2. UNION 3. SELECT column_name(s) FROM table_name2; - UNION ALL:显示所有结果,包括重复的值。

1. SELECT column_name(s) FROM table_name1 2. UNION ALL 3. SELECT column_name(s) FROM table_name2;

示例

以表table1和表table2为例,表数据如下。

1. openGauss=# SELECT * FROM table1;
2. name  | city
3. -------+------
4. Joes  | BJ
5. Lily  | BJ
6. James | SH
7. Grace | SZ
8. (4 rows)

10. openGauss=# SELECT * FROM table2;
11. id | name  | dept
12. ----+-------+-------
13. 1 | Tommy | IT
14. 2 | Lily  | IT
15. 3 | Li    | sales
16. 4 | Grace | IT
17. (4 rows)
  • UNION

列出两张表中所有雇员的姓名,重复值仅保留一个。

1. openGauss=# SELECT name FROM table1 UNION SELECT name FROM table2; 2. name 3. ------- 4. Li 5. Lily 6. James 7. Grace 8. Joes 9. Tommy 10. (6 rows) - UNION ALL

列出两张表中所有雇员的姓名,包括重复值。

1. openGauss=# SELECT name FROM table1 UNION ALL SELECT name FROM table2; 2. name 3. ------- 4. Joes 5. Lily 6. James 7. Grace 8. Tommy 9. Lily 10. Li 11. Grace 12. (8 rows)