Az UNION operátor használata

Befejeződött

Az UNION operátor lehetővé teszi, hogy két vagy több lekérdezési eredményhalmaz egyetlen eredményhalmazba legyen kombinálva. Ennek kétféle módja van:

  • UNION – az egyesített eredmény nem tartalmaz ismétlődéseket.
  • UNION ALL – az egyesített eredményhalmaz ismétlődő elemeket tartalmaz.

Tipp.

Az egyik halmaz null értéke egy másik halmaz null értékének felel meg.

Az eredményhalmazok UNION használatával történő kombinálásakor két szabály létezik:

  • Az oszlopok számának és sorrendjének minden lekérdezésben azonosnak kell lennie.
  • Az adattípusoknak kompatibilisnek kell lenniük.

Megjegyzés:

Az UNION eltér a JOIN-től. A JOIN két tábla oszlopait hasonlítja össze, és két tábla sorait tartalmazó eredményhalmazt hoz létre. Az UNION két eredményhalmazt fűz össze: az első eredményhalmaz összes sora hozzá lesz fűzve a második eredményhalmaz soraihoz.

Vegyünk egy egyszerű példát az ügyfelek két listájára és az általuk visszaadott eredményhalmazra. Az első lekérdezés 1 és 9 közötti Ügyfélazonosítóval rendelkező ügyfeleket ad vissza.

SELECT CustomerID, companyname, FirstName + ' ' + LastName AS 'Name'
FROM SalesLT.Customer
WHERE CustomerID BETWEEN 1 AND 9; 

A screenshot that shows results from the first SELECT statement.

A második lekérdezés 10 és 19 közötti Ügyfélazonosítóval rendelkező ügyfeleket ad vissza.

SELECT customerid, companyname, FirstName + ' ' + LastName AS 'Name'
FROM saleslt.Customer
WHERE customerid BETWEEN 10 AND 19;

A screenshot that shows results from the second SELECT statement.

Ha a két lekérdezést ugyanabba az eredményhalmazba szeretné egyesíteni, használja az UNION operátort:

SELECT customerid, companyname, FirstName + ' ' + LastName AS 'Name'
FROM saleslt.Customer
WHERE customerid BETWEEN 1 AND 9
UNION
SELECT customerid, companyname, FirstName + ' ' + LastName AS 'Name'
FROM saleslt.Customer
WHERE customerid BETWEEN 10 AND 19; 

Ez a visszaadott eredményhalmaz:

A screenshot that shows results from the UNION statement.

Az összes Transact-SQL-utasításhoz hasonlóan a rendezési sorrend sem garantált, hacsak nincs explicit módon megadva. Ha rendezett kimenetre van szüksége, adjon hozzá egy ORDER BY záradékot a második lekérdezés végén.

Az UNION vagy az UNION ALL esetén mindkét lekérdezésnek azonos számú oszlopot kell tartalmaznia, és az oszlopoknak azonos adattípusúaknak kell lenniük, így különböző lekérdezésekből származó sorokat lehet összekapcsolni.