-
MySQL UnionMySQL 2016. 12. 5. 20:21
MySQL - UNION
MySQL 과 같은 RDBMS에서 사용하는 Union 연산자는 여러 테이블에 존재하는 같은 성격의 값을 한번의 쿼리로 추출할 수 있도록 돕는다.
Member 테이블에 회원 이메일이 있고, Newsletter 테이블에 구독자 이메일이 있는데, 모든 이메일로 메일을 보내고자 할 경우 두 번의 쿼리와 병합 프로그램을 만들어야 할 것이다. 이럴 때 union 연산자를 사용해 한번의 쿼리로 간단하게 정보를 추출할 수 있다.Union을 사용할 때 주의할 점- 대응하는 필드의 이름이 같아야 한다. 같지 않다면 AS를 사용하여 같게 만든다.- 대응되는 각 필드의 타입이 같아야 한다.예제 테이블 정보
위의 두 테이블에서 이메일을 추출해야 할 경우 union을 사용하면 간단하다.중복되지 않은 유일한 정보 추출하는 경우(SELECT u_name, u_email FROM Member WHERE SEQ < 10 )UNION( SELECT letter_name AS u_name, letter_email AS u_email FROM Newletter WHERE letter_seq < 10 )중복되더라도 모든 값을 추출하는 경우(SELECT u_name, u_email FROM Member WHERE SEQ < 10 )UNION ALL( SELECT letter_name AS u_name, letter_email AS u_email FROM Newletter WHERE letter_seq < 10 )
Union을 하면 결과가 테이블에 종속되지 않기 때문에 정렬이 필요하다. 정렬을 위해서는 쿼리의 끝에 정렬을 추가한다.(SELECT u_name, u_email FROM Member WHERE SEQ < 10 )UNION( SELECT letter_name AS u_name, letter_email AS u_email FROM Newletter WHERE letter_seq < 10 ) ORDER BY u_email
'MySQL' 카테고리의 다른 글
Real MySQL [6-4] 실행계획 - possible_keys, key, key_len, ref, rows, extra 칼럼 (0) 2016.12.08 Real MySQL [6-3] 실행계획 - type 칼럼 (0) 2016.12.08 Real MySQL [6-2] 실행계획 - table, type 칼럼 (0) 2016.12.08 MySQL IN 구문 사용법 (0) 2016.12.08 Real MySQL [6-1] 실행계획 - id, select_type 칼럼 (0) 2016.12.06