[ UNION ]
UNION 구문은 첫번째 쿼리의 모든 행을 두번째 쿼리의 모든 행과 더하고, 중복된 행을 제거한 후, 결과를 리턴한다.
다음 예를 보면 첫번째 쿼리에서 EMPLOYEES_ID와 LAST_NAME에서 LAST_NAME 열이 A나 B로 시작하는 직원 레코드를 얻고, 두번째 쿼리에서는 EMPLOYEES_ID와 LAST_NAME 열에서 LAST_NAME이 B나 C로 시작하는 직원 레코드를 얻었다.
쉽게 알 수 있겠지만 B로 시작되는 LAST_NAME 열을 가지는 직원 레코드는 첫번째와 두번째 쿼리 모두에서 선택되며 , 중복되는 행들은 결과셋에서 제외된다.
[UNION ALL]
UNION ALL은 UNION과 비슷하지만 중복된 ROW를 제거하지는 않는다.
[ 결과값 비교 ]
UNION 구문은 첫번째 쿼리의 모든 행을 두번째 쿼리의 모든 행과 더하고, 중복된 행을 제거한 후, 결과를 리턴한다.
다음 예를 보면 첫번째 쿼리에서 EMPLOYEES_ID와 LAST_NAME에서 LAST_NAME 열이 A나 B로 시작하는 직원 레코드를 얻고, 두번째 쿼리에서는 EMPLOYEES_ID와 LAST_NAME 열에서 LAST_NAME이 B나 C로 시작하는 직원 레코드를 얻었다.
쉽게 알 수 있겠지만 B로 시작되는 LAST_NAME 열을 가지는 직원 레코드는 첫번째와 두번째 쿼리 모두에서 선택되며 , 중복되는 행들은 결과셋에서 제외된다.
select employee_id, last_name
from employees
where last_name like 'A%' or last_name like 'B%'
union
select employee_id, last_name
from employees
where last_name like 'C%' or last_name like 'B%'
order by last_name
from employees
where last_name like 'A%' or last_name like 'B%'
union
select employee_id, last_name
from employees
where last_name like 'C%' or last_name like 'B%'
order by last_name
[UNION ALL]
UNION ALL은 UNION과 비슷하지만 중복된 ROW를 제거하지는 않는다.
select employee_id, last_name
from employees
where last_name like 'A%' or last_name like 'B%'
union all
select employee_id, last_name
from employees
where last_name like 'C%' or last_name like 'B%'
order by last_name
from employees
where last_name like 'A%' or last_name like 'B%'
union all
select employee_id, last_name
from employees
where last_name like 'C%' or last_name like 'B%'
order by last_name
[ 결과값 비교 ]
'04번. IT 힌트얻기 > ▶ DB/ SQL ' 카테고리의 다른 글
[SQL 고수되기] 열번째 이야기 (0) | 2011.10.06 |
---|---|
[SQL 고수되기] 아홉번째 이야기 (0) | 2011.10.06 |
[Function] row_number() over(partition by...order by ....) (0) | 2011.10.05 |
[SQL고수되기] 여덟번째 이야기 (0) | 2011.10.05 |
[SQL고수되기] 일곱번째 이야기 (0) | 2011.10.05 |