Źródło: Arkusze CKE
Zdefiniowano bazę danych z tabelą mieszkancy o polach: nazwisko, imie, miasto. Następnie stworzono następujące zapytanie do bazy: SELECT nazwisko, imie FROM mieszkancy WHERE miasto="Poznań" UNION ALL SELECT nazwisko, imie FROM mieszkancy WHERE miasto="Kraków"; Wskaż zapytanie, które zwróci identyczne dane:
Warianty odpowiedzi
-
A
SELECT nazwisko, imie FROM mieszkancy WHERE miasto HAVING "Poznań" OR "Kraków";
-
B
SELECT nazwisko, imie FROM mieszkancy AS "Poznań" OR "Kraków";
-
C
SELECT nazwisko, imie FROM mieszkancy WHERE miasto BETWEEN "Poznań" OR "Kraków";
-
D
SELECT nazwisko, imie FROM mieszkancy WHERE miasto="Poznań" OR miasto="Kraków";
Wyjaśnienie
Spójrzmy na to zapytanie. Pierwsza część wybiera mieszkańców z Poznania, a druga z Krakowa. Operator UNION ALL łączy te dwa zbiory w jeden wynik.
Dokładnie ten sam efekt uzyskamy pisząc jedno, prostsze zapytanie i stosując warunek logiki z operatorem OR. Zwrot miasto równa się Poznań OR miasto równa się Kraków pobierze dokładnie tych samych ludzi.
Wybierając opcję z OR piszemy czytelniejszy i zoptymalizowany kod, który wykonuje dokładnie tę samą pracę bez konieczności składania dwóch oddzielnych kwerend.