Używamy cookies, żeby zwiększyć Twoje doświadczenia na stronie
CodeWorlds

UNION i UNION ALL

Ostatni korytarz Labiryntu uczy łączenia zbiorów. Dotąd każde zapytanie zwracało jedną listę. Teraz weźmiemy dwa zapytania i skleimy ich wyniki w jedną listę za pomocą operatorów UNION i UNION ALL.

UNION - łączenie zbiorów

Operator UNION skleja wyniki dwóch zapytań w jedną listę. Oba zapytania muszą zwracać tę samą liczbę kolumn o zgodnych typach:

1SELECT tytul FROM ksiazki WHERE kategoria_id = 1
2UNION
3SELECT tytul FROM ksiazki WHERE kategoria_id = 2;

UNION
usuwa duplikaty - jeśli ten sam tytuł trafi się w obu zapytaniach, pojawi się tylko raz.

UNION ALL - z duplikatami

UNION ALL
działa tak samo, ale zachowuje wszystkie wiersze, łącznie z powtórzeniami:

1SELECT tytul FROM ksiazki WHERE kategoria_id = 1
2UNION ALL
3SELECT tytul FROM ksiazki WHERE kategoria_id = 2;

Jest szybszy, bo Biblioteka nie musi szukać i usuwać powtórek. Wybieraj go, gdy duplikaty Ci nie przeszkadzają.

Łączenie różnych tabel

UNION wcale nie wymaga, by oba zapytania pochodziły z tej samej tabeli. Wystarczy zgodna liczba i typy kolumn:

1SELECT imie FROM autorzy
2UNION
3SELECT imie FROM czytelnicy;

Tak otrzymamy jedną listę imion - zarówno twórców, jak i czytelników Biblioteki.

@name

Przejdź do CodeWorlds