Kategoria: SQL Dodane przez marcin90

Czym się różni UNION od UNION ALL?

1 odpowiedź

1 0 Dodane 10-06-2018 przez marcin90

Unie w SQL to operacje sumujące dowolną ilość zbiorów*.

Różnica polega jedynie na tym, że w wyniku operacji UNION usunięte zostają duplikaty powstałe po łączeniu zbiorów, a wynikiem operacji UNION ALL będą wszystkie wpisy z obu zbiorów.

Ważne!
Łączone zbiory muszą być zbudowane w ten sam sposób, a dokładniej mówiąc:
- muszą mieć identyczną liczbę kolumn
- typy odpowiadających sobie kolumn muszą być kompatybilne


Przykłady:
W celu łatwiejszego zrozumienia tematu posłużymy się dwoma prostymi tabelami: Car oraz Mark (marka pojazdu).
Tabele zostały wypełnione przykładowymi danymi. Na żółto oraz zielono zaznaczono duplikujące się wpisy w tych tabelach.

Przygotowanie tabel

CREATE TABLE Car (
	Id int,
	MarkName NVARCHAR(15)
)
CREATE TABLE Mark (
	Id INT,
	Name NVARCHAR (20)
)

UNION

SELECT Id, MarkName FROM Car
UNION
SELECT Id, Name FROM Mark

UNION ALL

SELECT Id, MarkName FROM Car
UNION ALL
SELECT Id, Name FROM Mark

Link do dyskusji ile unii możemy wykonać w jednym zapytaniu:
*https://stackoverflow.com/questions/6676970/sql-server-whats-the-limit-on-number-of-unions

Dodaj swoją wersję odpowiedzi

Dodajesz odpowiedź jako gość. Zaloguj się się by uzyskać dostęp do rankingu oraz powiadomień.