다음을 통해 공유


Union 사용에 대한 지침

UNION 연산자를 사용할 때는 다음 지침을 따릅니다.

  • UNION과 조합되는 문의 모든 SELECT 목록은 같은 수의 식(열 이름, 산술 식, 집계 함수 등)을 가져야 합니다.

  • UNION과 조합되는 결과 집합의 해당 열 또는 개별 쿼리에 사용되는 열의 하위 집합은 동일한 데이터 형식이거나 두 데이터 형식 간 암시적 데이터 변환이 가능하거나 또는 명시적 변환을 제공해야 합니다. 예를 들어 datetime 데이터 형식 열과 binary 데이터 형식 열의 경우 명시적 변환을 제공하지 않으면 두 열 간에 UNION 연산이 수행되지 않습니다. 단, money 데이터 형식 열과 int 데이터 형식 열은 암시적으로 변환될 수 있으므로 UNION 연산이 수행됩니다.

    xml 데이터 형식의 열은 동등한 형식이어야 합니다. 모든 열이 XML 스키마로 형식화되거나 모두 형식화되지 않아야 합니다. 형식화된 경우 모든 열이 동일한 XML 스키마 컬렉션으로 형식화되어야 합니다.

  • UNION은 개별 쿼리에 지정된 순서에 따라 열을 일 대 일로 비교하기 때문에 UNION으로 조합되는 문의 대응되는 결과 집합 열은 그 순서가 같아야 합니다.

    다음 예를 살펴보십시오.

    TABLE3

     

     

    TABLE4

     

    A

    B

    C

    A

    B

    INT

    CHAR(4)

    CHAR(4)

    CHAR(4)

    FLOAT

    ---

    -------

    -------

    -------

    -------

    1

    ABC

    JKL

    JKL

    1.000

    2

    DEF

    MNO

    MNO

    5.000

    3

    GHI

    PQR

     

     

    다음 쿼리를 실행합니다.

    SELECT a, b FROM table3
    UNION 
    SELECT b, a FROM table4
    

    결과 집합은 다음과 같습니다.

    a          b
    --------   -----
    1.000000   abc
    2.000000   def
    3.000000   ghi
    1.000000   jkl
    5.000000   mno
    

    UNION 연산에서 서로 다른 데이터 형식을 조합하면 이를 변환하는 데 데이터 형식의 우선 순위 규칙이 사용됩니다. 앞의 예에서는 int 값이 float로 변환되는데 이는 floatint보다 우선 순위가 높기 때문입니다. 자세한 내용은 데이터 형식 우선 순위(Transact-SQL)를 참조하십시오.

    다음 쿼리는 대응되는 열의 데이터 형식이 호환되지 않으므로 오류 메시지를 생성합니다.

    SELECT b, c FROM table3
    UNION 
    SELECT a, b FROM table4
    
  • UNION으로 만들어진 테이블의 열 이름은 UNION 문의 첫 번째 개별 쿼리에서 가져옵니다. 결과 집합의 열을 새 이름으로 참조하려면(예: ORDER BY 절) 다음과 같이 첫 번째 SELECT에서 해당 열을 참조해야 합니다.

    SELECT city AS Cities FROM stores_west
    UNION 
    SELECT city FROM stores_east
    ORDER BY city