Problem:
Chcesz wyeliminować zduplikowane wiersze ze zbioru wyników zapytania, tak aby każdy wiersz pojawiał się tylko raz.
Przykład:
Nasza baza danych zawiera tabelę o nazwie clothes
z danymi w następujących kolumnach:id
, name
, color
i year_produced
.
id | imię | kolor | year_produced |
---|---|---|---|
1 | koszulka | żółty | 2015 |
2 | kurtka | niebieski | 2016 |
3 | dżinsy | czarny | 2015 |
4 | kurtka | niebieski | 2015 |
5 | kurtka | zielony | 2016 |
6 | kurtka | żółty | 2017 |
7 | kapelusz | żółty | 2017 |
Zdobądźmy niepowtarzające się nazwy i kolory ubrań wyprodukowanych przed 2017 rokiem.
Rozwiązanie:
SELECT DISTINCT name, color FROM clothes WHERE year_produced < 2017;
Oto wynik:
nazwa | kolor |
---|---|
Koszulka | żółty |
kurtka | niebieski |
dżinsy | czarny |
kurtka | zielony |
Zwróć uwagę, że niebieski
Dyskusja:
Po prostu użyj DISTINCT
słowo kluczowe po SELECT
jeśli chcesz wybrać tylko niepowtarzające się wiersze. To słowo kluczowe wymusza odrzucenie przez zapytanie wszelkich zduplikowanych wierszy na podstawie tylko wymienionych kolumn.
Oto przykład wyboru tylko wierszy, dla których nazwa elementu jest unikalna:
SELECT DISTINCT name FROM clothes WHERE year_produced < 2017;
W przeciwieństwie do poprzedniego zapytania, to zwraca tylko trzy rekordy:
nazwa | |
---|---|
koszulka | |
dżinsy | |
Chociaż w oryginalnej tabeli znajdują się cztery dżinsy (dwa niebieskie, jeden zielony i jeden żółty), element pojawia się w tym zestawie wyników tylko raz dzięki DISTINCT
słowo kluczowe.