Udostępnij za pośrednictwem


Zalecenia dotyczące używania Unii

Podczas korzystania z operatorów UNION, należy postępować zgodnie z poniższymi wskazówkami:

  • Wszystkie listy select w instrukcji, które są połączone z UNION muszą mieć taką samą liczbę wyrażeń (kolumna nazwy, arytmetyczne wyrażeń, funkcje agregacja i tak dalej).

  • Kolumny w zestawach wyników, które są są łączone z UNION lub każdy podzbiór kolumn w poszczególnych kwerendy, muszą 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 związek między kolumna Data/Godzina typ danych i jednym plik binarny typ danych nie będzie działać, o ile nie podano konwersja jawna.Jednak będzie działać związek między kolumna pieniądze typ danych i jednym int Typ danych, ponieważ mogą one być niejawnie konwertowane.

    Kolumny XML typ danych muszą być równoważne.Wszystkie kolumny muszą być wpisane do schematu XML albo untyped.Jeśli wpisany, muszą one być wpisywane do tego samego zbioru schematu XML.

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

    Poniżej przedstawiono 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

     

     

    wykonać tej kwerendy:

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

    Poniżej znajduje się zestaw wyników:

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

    Różne typy danych są łączone w operacji UNION, że są konwertowane zgodnie z regułami pierwszeństwa typu danych.W poprzednim przykładzie int są konwertowane wartości zmiennoprzecinkowe, because zmiennoprzecinkowe ma wyższy priorytet niż int.Aby uzyskać więcej informacji zobaczData Type Precedence (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, w wyniku UNION są pobierane na pierwszą kwerendę poszczególnych instrukcja UNION.Aby odwołać się do kolumna wyników przez nazwę (na przykład w klauzula ORDER BY), kolumna muszą mowa w ten sposób, w polu Wybierz pierwszy:

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