Udostępnij za pośrednictwem


Łączenie wyników zestawy z Unii

Pozwala operatora UNION do połączenia wyniki dwóch lub więcej instrukcji SELECT pojedyncze zestaw wyniki.Zestawy wyników, które są łączone za pomocą Unii muszą mieć tę samą strukturę.Muszą mieć taką samą liczbę kolumn i odpowiednich kolumn zestaw wyników musi mieć typ danych zgodny.Aby uzyskać więcej informacji, zobacz Wskazówki dotyczące używania Unii.

Unia jest określony jako:

select_statement UNION [ALL] select_statement

Na przykład tabela1 i tabela2 mają te same dwa -kolumna struktury.

TABLE1

 

 

TABLE2

 

COLUMNA

COLUMNB

 

COLUMNC

COLUMND

CHAR(4)

INT

 

CHAR(4)

INT

-------

---

 

-------

---

ABC

  1

 

GHI

  3

DEF

  2

 

JKL

  4

GHI

  3

 

MNO

  5

Ta kwerenda tworzy związek między tabelami:

SELECT * FROM Table1
UNION
SELECT * FROM Table2

Zestaw wyników jest następujący:

ColumnA  ColumnB
-------  --------
abc      1
def      2
ghi      3
jkl      4
mno      5

Zestaw wyników kolumna nazwy Unii są takie same, jak kolumna nazwy w zestawie wyników pierwszej instrukcja SELECT w Unii.Zestaw wyników kolumna nazwy instrukcji SELECT są ignorowane.

Domyślnie UNION operator usuwa zduplikowane wiersze z zestaw wyników.Jeśli używasz wszystkie wszystkie wiersze są zawarte w wyniki i duplikatów nie są usuwane.

Dokładne wyniki operacji UNION zależą od sortowanie podczas instalacji i klauzula ORDER BY.Aby uzyskać więcej informacji dotyczących wpływu różnych ustawień sortowania, zobacz Praca z sortowania.

Dowolna liczba operatorów Unii mogą pojawiać się w Transact-SQL instrukcji.Na przykład:

SELECT * FROM TableA
UNION
SELECT * FROM TableB
UNION
SELECT * FROM TableC
UNION
SELECT * FROM TableD

Domyślnie SQL Server 2005 wynikiem instrukcja zawierający Unii operatory od lewej do prawej.Aby określić kolejność obliczeń, należy używać nawiasów.Na przykład poniższe instrukcje nie są równoważne:

/* First statement. */
SELECT * FROM TableA
UNION ALL
(   SELECT * FROM TableB
   UNION
   SELECT * FROM TableC
)
GO

/* Second statement. */
(SELECT * FROM TableA
 UNION ALL
 SELECT * FROM TableB
)
UNION
SELECT * FROM TableC)
GO

Uwagi

W pierwszym instrukcja, eliminuje duplikaty w Unii między TableB i TableC.W Unii między, zestaw i TableA, nie eliminuje duplikaty.W drugiej instrukcja duplikaty są uwzględniane w Unii między TableA i TableB, ale są eliminowane w kolejnych Unii z TableC.WSZYSTKIE nie ma wpływu na ostateczny wynik wyrażenie.

W przypadku Unii poszczególnych instrukcji SELECT nie może mieć własne ORDER BY lub klauzul obliczeń.Może istnieć tylko jeden ORDER BY lub OBLICZYĆ klauzula po ostatniej instrukcja SELECT; jest stosowana do zestaw wyników końcowych, łączny.Grupuj według i HAVING można określić tylko w pojedynczych instrukcji SELECT.