PostgreSQL-UNIONS 절
PostgreSQL UNION 절 / 연산자는 중복 행을 반환하지 않고 둘 이상의 SELECT 문의 결과를 결합하는 데 사용됩니다.
UNION을 사용하려면 각 SELECT에 동일한 수의 열이 선택되고 동일한 수의 열 식과 동일한 데이터 유형이 있어야하며 동일한 순서로 있어야하지만 길이가 같을 필요는 없습니다.
통사론
기본 구문 UNION 다음과 같습니다-
SELECT column1 [, column2 ]
FROM table1 [, table2 ]
[WHERE condition]
UNION
SELECT column1 [, column2 ]
FROM table1 [, table2 ]
[WHERE condition]
여기서 주어진 조건은 요구 사항에 따라 주어진 표현식이 될 수 있습니다.
예
다음 두 테이블을 고려하십시오. (a) COMPANY 테이블은 다음과 같습니다.
testdb=# 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)
(b) 다른 테이블은 다음과 같이 DEPARTMENT입니다.
testdb=# 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)
이제 다음과 같이 UNION 절과 함께 SELECT 문을 사용하여이 두 테이블을 조인하겠습니다.
testdb=# 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 | Engineering
6 | Kim | Finance
2 | Allen | Engineering
3 | Teddy | Engineering
4 | Mark | Finance
1 | Paul | IT Billing
7 | James | Finance
(7 rows)
UNION ALL 조항
UNION ALL 연산자는 중복 행을 포함하여 두 개의 SELECT 문의 결과를 결합하는 데 사용됩니다. UNION에 적용되는 동일한 규칙이 UNION ALL 연산자에도 적용됩니다.
통사론
기본 구문 UNION ALL 다음과 같습니다-
SELECT column1 [, column2 ]
FROM table1 [, table2 ]
[WHERE condition]
UNION ALL
SELECT column1 [, column2 ]
FROM table1 [, table2 ]
[WHERE condition]
여기서 주어진 조건은 요구 사항에 따라 주어진 표현식이 될 수 있습니다.
예
이제 다음과 같이 SELECT 문에서 위에서 언급 한 두 테이블을 결합 해 보겠습니다.
testdb=# 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 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)