Różnica polega 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 (duplikaty nie zostają usunięte).

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)
)


SQL - UNION

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

Jak widać, pomimo tego, że wpis 'Toyota' istnieje w obu tabelach, wynikiem operacji jest tylko jeden wpis. Mechanizm działania UNION w SQL został potwierdzony - duplikaty zostają usunięte.


SQL - UNION ALL

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

Wynikiem łączenia tabel przy pomocy UNION ALL są wszystkie wpisy z oby tabel - instrukcja UNION ALL w SQL nie usuwa duplikatów, są one widoczne w wynikach zapytania.

alsenq 02-02-2022 01:42
Jakie są różnice pod względem wydajności? Co jest szybsze, UNION czy UNION ALL?


© 2024 - SkillsTest.pl | | Regulamin | Polityka Prywatnosci