English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
The PostgreSQL UNION operator merges the results of two or more SELECT statements.
The UNION operator is used to merge the result sets of two or more SELECT statements.
Please note that each SELECT statement within UNION must have the same number of columns. The columns must also have similar data types. In addition, the order of the columns in each SELECT statement must be the same.
The basic syntax of UNION is as follows:
SELECT column1 , [column2 ] FROM table1 , [table2 ] [WHERE condition] UNION SELECT column1 , [column2 ] FROM table1 , [table2 ] [WHERE condition]
The conditional statement here can be set to any expression as per your requirement.
Create COMPANY table (Download COMPANY SQL file ),data content is as follows:
w3codeboxdb# select * from COMPANY; id | name | age | address | salary ----+-------+-----+-----------+-------- 1 | Paul | 32 | California| 20000 2 | Allen | 25 | Texas | 15000 3 | Teddy | 23 | Norway | 20000 4 | Mark | 25 | Rich-Mond | 65000 5 | David | 27 | Texas | 85000 6 | Kim | 22 | South-Hall| 45000 7 | James | 24 | Houston | 10000 (7 rows)
Create DEPARTMENT table (Download DEPARTMENT SQL file ),data content is as follows:
w3codeboxdb=# SELECT * from DEPARTMENT; id | dept | emp_id ----+-------------+-------- 1 | IT Billing | 1 2 | Engineering | 2 3 | Finance | 7 4 | Engineering | 3 5 | Finance | 4 6 | Engineering | 5 7 | Finance | 6 (7 rows)
Now, we use the UNION clause in the SELECT statement to connect the two tables as shown below:
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;
The results are as follows:
emp_id | name | dept --------+-------+-------------- 5 | David | Engineering 6 | Kim | Finance 2 | Allen | Engineering 3 | Teddy | Engineering 4 | Mark | Finance 1 | Paul | IT Billing 7 | James | Finance (7 rows)
The UNION ALL operator can connect two SELECT statements with duplicate rows, usually the UNION operator selects different values. If duplicate values are allowed, please use UNION ALL.
The syntax of UNION ALL clause is as follows:
SELECT column1 , [column2 ] FROM table1 , [table2 ] [WHERE condition] UNION ALL SELECT column1 , [column2 ] FROM table1 , [table2 ] [WHERE condition]
The conditional statement here can be set to any expression as per your requirement.
Now, let's combine the two tables mentioned above using the SELECT statement with the UNION ALL clause:
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;
The results are as follows:
emp_id | name | dept --------+-------+-------------- 1 | Paul | IT Billing 2 | Allen | Engineering 7 | James | Finance 3 | Teddy | Engineering 4 | Mark | Finance 5 | David | Engineering 6 | Kim | Finance 1 | Paul | IT Billing 2 | Allen | Engineering 7 | James | Finance 3 | Teddy | Engineering 4 | Mark | Finance 5 | David | Engineering 6 | Kim | Finance (14 rows)