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)
  9. openGauss=# SELECT * FROM table2;
  10. id | name | dept
  11. ----+-------+-------
  12. 1 | Tommy | IT
  13. 2 | Lily | IT
  14. 3 | Li | sales
  15. 4 | Grace | IT
  16. (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)