본문 바로가기

04번. IT 힌트얻기/▶ DB/ SQL

union vs. union all

[ UNION ]

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

[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

[ 결과값 비교 ]