runoobdb# select * from COMPANY;
id | name | age | address | salary
----+-------+-----+-----------+--------1|Paul|32|California|200002|Allen|25|Texas|150003|Teddy|23|Norway|200004|Mark|25|Rich-Mond|650005|David|27|Texas|850006|Kim|22|South-Hall|450007|James|24|Houston|10000(7 rows)
runoobdb=# SELECT *from DEPARTMENT;
id | dept | emp_id
----+-------------+--------1| IT Billing|12|Engineering|23|Finance|74|Engineering|35|Finance|46|Engineering|57|Finance|6(7 rows)
现在,我们在 SELECT 语句中使用 UNION 子句将两张表连接起来,如下所示:
SELECT EMP_ID, NAME, DEPT FROM COMPANY INNER JOIN DEPARTMENT
ON COMPANY.ID = DEPARTMENT.EMP_ID
UNION
SELECT EMP_ID, NAME, DEPT FROM COMPANY LEFT OUTER JOIN DEPARTMENT
ON COMPANY.ID = DEPARTMENT.EMP_ID;
得到结果如下:
emp_id | name | dept
--------+-------+--------------5|David|Engineering6|Kim|Finance2|Allen|Engineering3|Teddy|Engineering4|Mark|Finance1|Paul| IT Billing7|James|Finance(7 rows)
UNION ALL 子句
UNION ALL 操作符可以连接两个有重复行的 SELECT
语句,默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。
语法
UINON ALL 子句基础语法如下:
SELECT column1 [, column2 ]
FROM table1 [, table2 ][WHERE condition]
UNION ALL
SELECT column1 [, column2 ]
FROM table1 [, table2 ][WHERE condition]
这里的条件语句可以根据您的需要设置任何表达式。
实例
现在,让我们把上面提到的两张表用 SELECT 语句结合
UNION ALL 子句连接起来:
SELECT EMP_ID, NAME, DEPT FROM COMPANY INNER JOIN DEPARTMENT
ON COMPANY.ID = DEPARTMENT.EMP_ID
UNION ALL
SELECT EMP_ID, NAME, DEPT FROM COMPANY LEFT OUTER JOIN DEPARTMENT
ON COMPANY.ID = DEPARTMENT.EMP_ID;
得到结果如下:
emp_id | name | dept
--------+-------+--------------1|Paul| IT Billing2|Allen|Engineering7|James|Finance3|Teddy|Engineering4|Mark|Finance5|David|Engineering6|Kim|Finance1|Paul| IT Billing2|Allen|Engineering7|James|Finance3|Teddy|Engineering4|Mark|Finance5|David|Engineering6|Kim|Finance(14 rows)