- SQL - UNION에 대해서 배움.
- MySQL에서 SELECT 시에 임의로 컬럼 추가하는 법을 배움.
UNION은 UNION
과 UNION ALL
명령어를 사용 할 수 있음.
UNION
은 뒤에 DISTINCT를 생략한 것이라고 보면 된다.
그러므로 둘의 차이는 중복된 레코드를 가져오냐 아니냐의 차이임.
UNION은 두 테이블에서 비슷한 성질의 속성을 하나의 컬럼에 넣고 싶을 때 사용함.
예를 들어서,
A서점에 있는 책을 보관하는 table_a,
B서점에 있는 책을 보관하는 table_b.
각 테이블의 책 정보를 구분없이 하나의 테이블에 나타내고 싶다면?
이때 UNION을 쓸 수 있다.
(SELECT 제목, 출판사 FROM table_a)
UNION ALL
(SELECT title as 제목, publisher as 출판사 FROM table_b);
table_b 에는 속성이 영어로 title, publisher로 되어 있었는데,
UNION 하기 위해서 table_a와 똑같이 한글로 제목, 출판사라고 바꿔줬다.
쿼리를 실행하면 table_a와 table_b에 있는 모든 레코드에서 제목과 출판사라는 속성으로 테이블을 볼 수 있다.
UNION ALL
대신에 UNION
을 사용하면 같은 레코드는 제거된다.
어떤 구분을 위해서 임의의 값과 컬럼을 추가해서 SELECT 하고 싶을 때가 있다.
(SELECT 제목, 출판사, 'A서점' AS 서점구분 FROM table_a)
UNION ALL
(SELECT title AS 제목, publisher AS, 'B서점' AS 서점구분 FROM table_b)
쿼리를 실행하면 결과 테이블에 속성하나가 추가되면서 서점구분이 테이블에 따라 "A서점"이나 "B서점" 으로 값이 삽입된다.