W SQL bardzo często potrzebujesz pobrać listę wartości z jednej kolumny tak, aby się nie powtarzały (np. lista producentów do filtra w aplikacji webowej). Domyślnie instrukcja SELECT zwraca wszystkie pasujące wiersze, więc jeśli w tabeli istnieje wiele programów tego samego producenta, nazwa producenta pojawi się w wyniku wiele razy.
Służy do tego słowo kluczowe DISTINCT. Zastosowane po SELECT powoduje, że wynik zawiera tylko unikalne wiersze (dla zestawu wybieranych kolumn). W tym zadaniu wybierana jest pojedyncza kolumna, więc unikalność dotyczy wartości kolumny producent. Zapytanie SELECT DISTINCT producent FROM programy; zwróci więc listę producentów bez powtórzeń.
Dlaczego pozostałe odpowiedzi są błędne?
- SELECT UNIQUE producent FROM programy; – w MySQL w składni SELECT nie stosuje się słowa kluczowego UNIQUE w tym miejscu, więc jest to zapis niezgodny ze składnią MySQL i nie realizuje poprawnie zadania.
- SELECT producent FROM programy WHERE UNIQUE; – klauzula WHERE wymaga warunku logicznego (wyrażenia porównania, operatorów logicznych itp.). Samo słowo UNIQUE nie jest warunkiem filtrującym, więc zapytanie jest niepoprawne składniowo.
- SELECT producent FROM programy WHERE producent NOT DUPLICATE; – taka konstrukcja nie jest poprawną składnią MySQL. Eliminowanie duplikatów nie odbywa się przez "NOT DUPLICATE" w WHERE, tylko przez DISTINCT (lub ewentualnie przez GROUP BY, gdy jest to uzasadnione logiką zapytania).
Wskazówka egzaminacyjna: gdy w treści pojawiają się sformułowania "bez powtórzeń", "unikalne wartości", "bez duplikatów", najczęściej chodzi o użycie DISTINCT (dla kolumn) albo o ograniczenie UNIQUE (jako cechę/indeks w definicji tabeli). W tym zadaniu mowa jest o kwerendzie SELECT, więc właściwy jest DISTINCT.