[MySQL] DB 테이블 연산자 - UNION (두 개 이상 테이블 합치기)
UNION(유니온)
- 두 개 이상의 테이블을 묶어서 반환한다.
- Select의 열 리스트를 바탕으로 두 개 이상 쿼리의 결과를 하나의 테이블로 합친다.
- 유니온의 결과를 각 Select의 값들이 "겹쳐진" 결과라고 생각하면 된다.
Select title From table1 |
위 쿼리를 사용하면 하나의 테이블로 반환된다.
유니온 사용시 주의사항
- 각 Select문의 열 수는 같아야한다. 첫번째 문장에서는 두 열을 선택하고 두번째에서는 하나의 열을 선택할 수 없다.
- 각 Select문에 표현식과 집계 함수도 같아야 한다.
- Select문의 순서는 중요하지 않다. 순서는 결과에 영향을 미치지 않는다.
- 유니온의 결과에서 중복값은 하나로 나오는 것이 기본 설정이다.
- 열의 데이터 타입은 같거나 서로 변환 가능한 값이어야 한다.
- 특별한 이유가 있어 중복값을 보고 싶으면 UNION ALL을 사용할 수 있다.
- Order By의 경우 유니온의 맨 끝에 하나만 받을 수 있다.
* 각 Select에서는 같은 수의 열을 사용해야 한다.
Select title From table1 |
예) Union으로 테이블 만들기
Create Table my_union AS |
* 참고 (아래 두 개의 연산자는 MySQL에서 지원하지 않는다.)
- INTERSECT : 첫번째 쿼리와 두번째 쿼리 모두에 있는 열들을 반환한다. (교집합)
Select title From table1 |
- EXCEPT : 첫번째 쿼리에는 있지만 두번째 쿼리에는 없는 열들을 반환한다.
table1에서 table2와의 교집합을 제거한 나머지 table1 부분을 반환한다.
Select title From table1 |
[출처] Powerful Programming | 음주코딩 (http://warmz.tistory.com/278)
'리눅스 > MySQL' 카테고리의 다른 글
홈페이지 한글 깨짐(물음표) 현상 해결 (0) | 2015.01.16 |
---|---|
euckr DB를 utf8 로 변경하기 (간단) (0) | 2015.01.16 |
MySQL 5.5 에서 timestamp(14) 사용이 되지 않을때 (0) | 2015.01.16 |
MySql 설치에러 : checking "LinuxThreads"... "Not found" (0) | 2015.01.16 |
MySql error Can’t open file: ‘host.MYI’. (errno: 142) (0) | 2015.01.16 |