ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • MySQL Union
    MySQL 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






Designed by Tistory.