Podsumowanie: W tym poradniku dowiesz się jak używać klauzuli PostgreSQL SELECT DISTINCT
do usuwania duplikatów wierszy ze zbioru wyników zwracanych przez zapytanie.
Wprowadzenie do klauzuli PostgreSQL SELECT DISTINCT
Klauzula DISTINCT
jest używana w instrukcji SELECT
w celu usunięcia duplikatów wierszy ze zbioru wyników. Klauzula DISTINCT
zachowuje jeden wiersz dla każdej grupy duplikatów. Klauzula DISTINCT
może być zastosowana do jednej lub więcej kolumn w liście wyboru instrukcji SELECT
.
Następująca ilustracja przedstawia składnię klauzuli DISTINCT
:
Code language: SQL (Structured Query Language) (sql)SELECT DISTINCT column1FROM table_name;
W tym oświadczeniu wartości w kolumnie column1
są używane do oceny duplikatu.
Jeśli określisz wiele kolumn, klauzula DISTINCT
będzie oceniać duplikat na podstawie kombinacji wartości tych kolumn.
Code language: SQL (Structured Query Language) (sql)SELECT DISTINCT column1, column2FROM table_name;
W tym przypadku, kombinacja wartości w obu kolumnach column1
i column2
zostanie użyta do oceny duplikatu.
PostgreSQL udostępnia również DISTINCT ON (expression)
aby zachować „pierwszy” wiersz każdej grupy duplikatów przy użyciu następującej składni:
Porządek wierszy zwróconych z instrukcji SELECT
jest nieokreślony, dlatego „pierwszy” wiersz każdej grupy duplikatów jest również nieokreślony.
Dobrą praktyką jest zawsze używanie klauzuli ORDER BY
z instrukcją DISTINCT ON(expression)
, aby zestaw wyników był przewidywalny.
Zauważ, że wyrażenie DISTINCT ON
musi pasować do najbardziej wysuniętego na lewo wyrażenia w klauzuli ORDER BY
.
PostgreSQL SELECT DISTINCT przykłady
Utwórzmy nową tabelę o nazwie distinct_demo
i wstawmy do niej dane w celu przećwiczenia klauzuli DISTINCT
.
Uważaj, że nauczysz się jak tworzyć tabele i wstawiać dane do tabel w kolejnych tutorialach. W tym poradniku wystarczy wykonać instrukcję w psql lub pgAdmin, aby wykonać polecenia.
Początkowo użyj następującego polecenia CREATE TABLE
aby utworzyć distinct_demo
tabelę, która składa się z trzech kolumn: id
bcolor
i fcolor
.
Code language: SQL (Structured Query Language) (sql)CREATE TABLE distinct_demo (id serial NOT NULL PRIMARY KEY,bcolor VARCHAR,fcolor VARCHAR);
Po drugie, wstaw kilka wierszy do tabeli distinct_demo
za pomocą następującej instrukcji INSERT
:
Po trzecie, odpytaj dane z tabeli distinct_demo
za pomocą instrukcji SELECT
:
Code language: SQL (Structured Query Language) (sql)SELECTid,bcolor,fcolorFROMdistinct_demo ;
PostgreSQL DISTINCT przykład jednej kolumny
Poniższa instrukcja wybiera m.in. unikalne wartości w kolumnie bcolor
z tabeli t1
i sortuje zbiór wyników w kolejności alfabetycznej przy użyciu klauzuli ORDER BY
.
Code language: SQL (Structured Query Language) (sql)SELECTDISTINCT bcolorFROMdistinct_demoORDER BYbcolor;
PostgreSQL DISTINCT dla wielu kolumn
Poniższe wyrażenie demonstruje jak użyć klauzuli DISTINCT
dla wielu kolumn:
Code language: SQL (Structured Query Language) (sql)SELECTDISTINCT bcolor,fcolorFROMdistinct_demoORDER BYbcolor,fcolor;
Ponieważ. określiliśmy obie kolumny bcolor
oraz fcolor
w klauzuli SELECT DISTINCT
clause, PostgreSQL połączył wartości w obu kolumnach bcolor
oraz fcolor
w celu określenia unikalności wierszy.
Kwerenda zwraca unikalną kombinację bcolor
i fcolor
z tabeli distinct_demo
. Zauważ, że tabela distinct_demo
ma dwa wiersze z red
wartością w obu kolumnach bcolor
i fcolor
. Kiedy zastosowaliśmy DISTINCT
do obu kolumn, jeden wiersz został usunięty z zestawu wyników, ponieważ jest duplikatem.
PostgreSQL DISTINCT ON przykład
Poniższa instrukcja sortuje zbiór wyników według kolumn bcolor
i fcolor
, a następnie dla każdej grupy duplikatów zachowuje pierwszy wiersz w zwróconym zbiorze wyników.
Code language: SQL (Structured Query Language) (sql)SELECTDISTINCT ON (bcolor) bcolor,fcolorFROMdistinct_demo ORDER BYbcolor,fcolor;
Tutaj są dane wyjściowe:
W tym tutorialu dowiedziałeś się, jak używać instrukcji PostgreSQL SELECT DISTINCT
do usuwania duplikatów wierszy zwróconych przez zapytanie.
- Czy ten tutorial był pomocny?
- TakNie