UNION ALL służy do połączenia wyników kilku zapytań SELECT w jeden wynik. W przeciwieństwie do UNION, nie usuwa duplikatów, czyli zwraca wszystkie wiersze znalezione przez każde z zapytań.
Składnia
SELECT kolumna1, kolumna2 FROM tabela WHERE warunek1
UNION ALL
SELECT kolumna1, kolumna2 FROM tabela WHERE warunek2;
Aby użyć UNION ALL, oba zapytania muszą zwracać:
- taką samą liczbę kolumn,
- kolumny w zgodnej kolejności,
- dane zgodnych typów.
Przykład
SELECT nazwisko, imie FROM mieszkancy WHERE miasto = 'Poznań'
UNION ALL
SELECT nazwisko, imie FROM mieszkancy WHERE miasto = 'Kraków';
Zapytanie zwraca mieszkańców Poznania oraz mieszkańców Krakowa. Ponieważ warunki dotyczą tej samej kolumny miasto i są rozłączne, można zapisać to prościej:
SELECT nazwisko, imie
FROM mieszkancy
WHERE miasto = 'Poznań' OR miasto = 'Kraków';
UNION a UNION ALL
UNIONusuwa powtarzające się wiersze z wyniku.UNION ALLzachowuje wszystkie wiersze, także duplikaty.
W zadaniach egzaminacyjnych trzeba zwracać uwagę, czy zapytania łączą wyniki z różnych tabel, czy tylko filtrują jedną tabelę kilkoma warunkami. Przy jednej tabeli i tej samej kolumnie często wystarczy WHERE ... OR ... albo WHERE ... IN (...).