UNION ALL w SQL

Słownik kwalifikacji INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych

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

  • UNION usuwa powtarzające się wiersze z wyniku.
  • UNION ALL zachowuje 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 (...).