연구실/SQL
SQL UNION - 두개 이상의 SELECT 합치기
최익필
2010. 8. 3. 03:18
이 포스트를 만든 목적
- 심심해서
이 포스트의 준비물
- gVim 7.2
- Postgresql 8.4.2
- pgAdmin 1.10.1
참조 링크
내용
SQL UNION 은 무엇인가?
- SQL 연산자이다.
- 두개 이상의 SELECT 결과를 합칠 때 사용 한다.
- 결과들을 합칠 때, 중복 제거를 할 수 있고, 중복을 포함 할 수 있다.
SQL UNION 문법은 어떻게 되는가?
SQL UNION 을 사용 할 때 주의 해야 하는게 있는가?
- 여러 SELECT 결과 칼럼(열)들은 모두 동일한 갯수를 가지고 있어야 한다.
- 위 샘플에서 order_num 칼럼 1개만 쓰면, 모둔 SELECT 문은 칼럼 1개만 써야 한다.
- 여러 SELECT 결과 칼럼(열)들은 다른 SELECT 결과 칼럼(열)들과 동일한 데이터 형이거나 호환 되어야 한다.
- 위 샘플에서 order_num 칼럼의 데이터 타입이 char 이라면, 다른 SELECT 문 결과 역시 char와 같거나 호환 되어야 한다.
SQL UNION 을 어떻게 이해 하는게 좋은가?
- 종이와 연필을 준비한다.
- 여러 SELECT 문의 결과를 각각 그린다.
- UNION 일 경우, 테이블 T를 준비한다.
- 각 SELECT->row 들을 테이블 T와 똑같은게 있는지 검사한다.
- 똑같은게 있을 경우, T에 기입하지 않는다.
똑같은게 없을 경우, T에 기입한다.
- 4 ~ 5번 작업을 다 할 때까지 반복한다.
- 여기서 나온 T가 UNION 의 결과이다.
- UNION ALL 일 경우, 각각 그린 SELECT->row들을 테이블 A에 기입한다.
- 모든 SELECT->row들을 A에 다 기입했다면, 이 테이블 A가 UNION ALL 값들인 것이다.
맛보기 그림
orderitems table
orders table
SELECT UNION
UNION 해석
- 직접 UNION 을 해보기 전까진 잘 모른다.