Udostępnij za pośrednictwem


Wskazówki dotyczące używania Unii

Podczas korzystania z operatorów Unii, należy przestrzegać następujących zasad:

  • Wszystkie listy wybierz w sprawozdaniu, które są łączone z Unii muszą mieć taką samą liczbę wyrażeń (kolumna nazwy, arytmetycznych wyrażeń, funkcje agregujące itd.).

  • Kolumny w zestawach wyników, które są łączone z Unii lub dowolny podzbiór kolumn używanych w kwerendach poszczególnych musi być tego samego typu danych, mają Konwersja niejawna danych między typami danych dwóch możliwych lub mieć konwersja jawna dostarczone.Na przykład Unii między kolumna z datetime typ danych i jednym z binary dostarczonych konwersja jawna typ danych nie będzie działać.Jednakże będzie działać związek między kolumna z pieniędzy typ danych i jednym z int typ danych, ponieważ mogą one niejawnie konwertowane.

    Kolumny xml typ danych muszą być równoważne.Wszystkie kolumny muszą być wpisane do schematu XML albo bez typu.Jeśli wpisany, muszą być wpisane do tej samej kolekcja schematu XML.

  • Odpowiednich kolumn zestaw wyników w poszczególnych instrukcji, które są łączone z Unii muszą występować w tej samej kolejności, ponieważ Unii porównuje jeden w kolejności podanej w kwerendach poszczególnych kolumn.

    Oto przykład.

    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

     

     

    Wykonanie tej kwerendy:

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

    Zestaw wyników jest następujący:

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

    Gdy różne typy danych są łączone w operacji UNION, są konwertowane przy użyciu reguł pierwszeństwa typu danych.W poprzednim przykładzie int wartości są konwertowane na pływaka, ponieważ pływaka ma wyższy priorytet niż int.Aby uzyskać więcej informacji, zobacz Pierwszeństwo typu danych (Transact-SQL).

    Ta kwerenda generuje komunikat o błędzie, ponieważ nie są zgodne typy danych odpowiednich kolumn:

    SELECT b, c FROM table3
    UNION 
    SELECT a, b FROM table4
    
  • kolumna Nazwy tabela, wynikające z Unii są pobierane z pierwszą kwerendę indywidualnych w instrukcja Unii.Aby odwołać się do kolumna w zestaw wyników przez nową nazwę (na przykład w klauzula ORDER BY) kolumna musi określone w ten sposób w pierwszym wybierz:

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