SQL UNION 은 두개 이상의 SELECT 명령어에서 나온 결과를 합치는 연산문이다.
생각해야할 점은, UNION은 반드시 컴럼 수가 같아야 한다. 그리고 컬럼의 타입과 순서(Ordering)도 비슷해야 한다.
SQL UNION Syntax
SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;
UNION
SELECT column_name(s) FROM table2;
SQL UNION ALL Syntax
SELECT column_name(s) FROM table1
UNION ALL
SELECT column_name(s) FROM table2;
UNION ALL
SELECT column_name(s) FROM table2;
UNION ALL으로 하게 되면 같은 value 값도 중복되서 나온다.
예를들어,
SELECT City FROM Customers
UNION
SELECT City FROM Suppliers
ORDER BY City;
UNION
SELECT City FROM Suppliers
ORDER BY City;
City의 이름 순서대로 두 테이블에서 가져온 City 컬럼을 함쳐서 보여준다.
결과:
| City |
|---|
| Aachen |
| Albuquerque |
| Anchorage |
| Ann Arbor |
| Annecy |
| Barcelona |
| Barquisimeto |
| Bend |
| Bergamo |
| Berlin |
| Bern |
UNION ALL을 안하면 중복된 데이터는 없다.
같은 예에서 UNION ALL을 붙이 결과는 다음과 같다.
SELECT City FROM Customers
UNION ALL
SELECT City FROM Suppliers
ORDER BY City;
UNION ALL
SELECT City FROM Suppliers
ORDER BY City;
결과:
| City |
|---|
| Aachen |
| Albuquerque |
| Anchorage |
| Ann Arbor |
| Annecy |
| Barcelona |
| Barquisimeto |
| Bend |
| Bergamo |
| Berlin |
| Bern |
| Lisboa |
| Lisboa |
| London |
| London |
| London |
| London |
| London |
| London |
Lisboa, London 등과 같이 중복되는 데이터도 그대로 다 복사해서 보여준다.
반응형
'IT > SQL' 카테고리의 다른 글
| SQL INSERT INTO SELECT 문 (0) | 2015.02.03 |
|---|---|
| SQL SELECT INTO 문 (0) | 2015.02.03 |
| SQL LEFT JOIN 문 (0) | 2015.02.03 |
| SQL Joins (0) | 2015.01.29 |
| SQL BETWEEN (0) | 2015.01.29 |