Udostępnij za pośrednictwem


Combining Results Sets with UNION

UNION operator pozwala połączyć wyniki dwóch lub więcej instrukcji SELECT zestaw wyników pojedyncze.Zestawy wyników, które są łączone za pomocą UNION muszą mieć taką samą strukturę.Muszą mieć taką samą liczbę kolumn, a odpowiadające im kolumn zestaw wyników musi mieć typ danych zgodny.Aby uzyskać więcej informacji zobaczZalecenia dotyczące używania Unii.

UNION jest określony jako:

select_statement UNION [ALL] select_statement

Na przykład Tabela1 and Tabela2 mają ten sam dwu-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

Poniżej znajduje się zestaw wyników:

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

Zestaw wyników kolumna nazwy związku są takie same, jak kolumna nazw zestaw wyników dla pierwszej instrukcja SELECT w związku.Nazwy kolumn zestaw wyników z innych instrukcji SELECT, są ignorowane.

Domyślnie operator UNION usuwa zduplikowane wiersze z zestaw wyników.Jeśli używasz ALL, wszystkie wiersze są uwzględniane w wynikach, a duplikaty nie są usuwane.

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

Dowolną liczbę podmiotów gospodarczych UNION mogą pojawiać się w instrukcja języka Transact-SQL.Na przykład:

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

Domyślnie SQL Server 2005 oblicza instrukcja, która zawiera UNION operatory od lewej do prawej. Należy używać nawiasów, aby określić kolejność obliczeń.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 pierwszej instrukcja eliminuje duplikaty w związku między TableB and TableC.W związku między tym zestaw a TableA, nie eliminuje duplikaty.W drugiej instrukcja duplikaty są uwzględniane w związku między TableA and TableB, ale są usunięte w kolejnych związek z TableC.ALL nie ma wpływu na ostateczny wynik wyrażenie.

Użyto UNION poszczególnych instrukcji SELECT nie może mieć własne ORDER BY lub COMPUTE klauzul.Może istnieć tylko jeden ORDER BY lub COMPUTE klauzula po ostatniej instrukcja SELECT; jest ona stosowana dla zestaw wyników końcowych, połączone.GROUP BY i HAVING można określić tylko w pojedynczych instrukcji SELECT.