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
Zobacz także