PostgreSQL修炼之道:从小工到专家(第2版)
上QQ阅读APP看书,第一时间看更新

3.5.2 UNION语句

使用UNION语句可以把从两张表中查询出来的数据合在一个结果集下,示例如下:


SELECT * FROM student WHERE no = 1 UNION SELECT * FROM student_bak where no = 2;

上面的语法比较简单,把两个SQL语句用“UNION”关键字连接起来就可以了。

查询结果如下:


osdba=# SELECT * FROM student WHERE no = 1 UNION SELECT * FROM student_bak where no = 2;
 no | student_name | age | class_no 
----+--------------+-----+----------
  1 | 张三         |  14 |        1
  2 | 吴二         |  15 |        1
(2 rows)

需要特别注意的是,UNION语句可以把结果集中相同的两条记录合并成一条:


osdba=# SELECT * FROM student WHERE no = 1 UNION SELECT * FROM student_bak where no = 1;
 no | student_name | age | class_no 
----+--------------+-----+----------
  1 | 张三         |  14 |        1
(1 row)

如果不想合并结果集中的相同记录,可以使用UNION ALL语句,示例如下:


osdba=# SELECT * FROM student WHERE no = 1 UNION ALL SELECT * FROM student_bak where no = 1;
 no | student_name | age | class_no 
----+--------------+-----+----------
  1 | 张三         |  14 |        1
  1 | 张三         |  14 |        1
(2 rows)