UNION vs UNIONALL 에 대해
오라클 게시판에 보시면 union 과 union all에 대해 설명해 두었습니다.
mysql 도 이와 다르지 않습니다.
- union : 동일 결과값이 존재할 경우 하나만 출력
- unionall : 모든 결과값 출력
tb1 이라는 테이블의 field1 이라는 필드에 아래값이 존재
tb1.field1
1
2
3
4
tb2 이라는 테이블의 field1 이라는 필드에 아래값이 존재
tb2.field1
3
4
5
6
UNION 사용시
select field1 from tb1 union select field1 from tb2
result field1
1
2
3
4
5
6
UNIONALL 사용시
select field1 from tb1 unionall select field1 from tb2
result field1
1
2
3
4
3
4
5
6
union 과 unionall을 사용할때는 테이블의 조건들이 모두 맞아야 합니다.
(필드명, 필드타입...)
그러나 그렇지 못한 경우는 일부러 맞추어 주어야 합니다.
select field1 as abc, 0 as zerofield..... from tb1
unionall
select abc, zerofield.... from tb2
UNION ALL 이 트래픽이 적게 걸리므로 추천