DISTINCT in PostgreSQL: Odabir, poredak prema & ograničenje (primjeri)
⚡ Pametni sažetak
DISTINCT in PostgreSQL koristi se s naredbom SELECT za uklanjanje dupliciranih redaka i vraćanje samo jedinstvenih vrijednosti. Obuhvaća sintaksu SELECT, SQL Shell i pgAdmin, DISTINCT na jednom i više stupaca te DISTINCT u odnosu na GROUP BY.
Podatke iz tablice možete dohvatiti pomoću naredbe SELECT.
Sintaksa:
SELECT [column names] FROM [table_name]
Ovdje,
- nazivi stupaca: Naziv stupaca čiju vrijednost želite dohvatiti.
- IZ: Klauzula FROM definira jednu ili više izvornih tablica za SELECT.
- naziv_tablice: Naziv postojeće tablice koju želite upitati.
Što je DISTINCT u PostgreSQL?
The DISTINCT klauzula u PostgreSQL koristi se s naredbom SELECT za uklanjanje dupliciranih redaka iz skupa rezultata. Kada stupac sadrži ponovljene vrijednosti, SELECT DISTINCT vraća samo jedinstvene vrijednosti, keeping jedan redak za svaku grupu duplikata. Ovo je korisno kada želite popis različitih unosa, kao što su jedinstveni gradovi kupaca ili kategorije proizvoda, bez ponavljanja.
DISTINCT procjenjuje sve stupce navedene u SELECT naredbi kako bi utvrdio je li redak jedinstven. PostgreSQL također pruža DISTINCT ON, koji vraća prvi redak za svaku različitu vrijednost određenog izraza. DISTINCT možete kombinirati s ORDER BY za kontrolu redova koji se pojavljuju i s LIMIT za ograničavanje broja rezultata.
PostgreSQL Odaberite Izjava u SQL ljusci
Korak 1) Imamo tablicu „tutoriali“ s 2 stupca, „id“ i „naziv_tutoriala“. Postavimo upit na nju. Upotrijebite sljedeći upit za popis podataka u tablici:
SELECT id,tutorial_name FROM tutorials;
NAPOMENA: Pomoću naredbe \c spojite se na bazu podataka koja sadrži tablicu koju želite upitati. U našem slučaju, spojeni smo na bazu podataka guru99.
Korak 2) Ako želite pregledati sve stupce u određenoj tablici, možemo upotrijebiti zamjenski znak zvjezdica (*). To znači da provjerava svaku mogućnost i kao rezultat toga vratit će svaki stupac.
SELECT * FROM tutorials;
Prikazuje sve zapise tablice s podukama.
Korak 3) Možete koristiti klauzulu ORDER za sortiranje podataka u tablici na temelju određenog stupca. Klauzula ORDER organizira podatke u redoslijedu od A do Z.
SELECT * FROM tutorials ORDER BY id;
Možete sortirati od Z do A koristeći "DESC" nakon naredbe "ORDER BY".
SELECT * FROM tutorials ORDER BY id DESC;
Korak 4) SELECT DISTINCT u PostgreSQL klauzula se može koristiti za uklanjanje duplih redaka iz rezultata. Čuva jedan redak za svaku grupu duplikata.
Syntax: SELECT DISTINCT column_1 FROM table_name;
Upitimo Postgres Select Distinct ID vrijednosti iz naših tutorijala za tablice koristeći različite upite u PostgreSQL:
SELECT DISTINCT(id) FROM tutorials;
Korak 5) Možete koristiti PostgreSQL LIMIT klauzula za ograničavanje broja zapisa koje vraća SELECT upit.
SELECT * FROM tutorials LIMIT 4;
PostgreSQL Odaberite naredbu u pgAdminu
Korak 1) U stablu objekata:
- Desni klik na tablicu.
- Odaberite Skripte.
- Kliknite na ODABERI SKRIPTU.
Korak 2) U ploči s desne strane:
- Uredite SELECT upit ako je potrebno.
- Kliknite ikonu Munje.
- Promatrajte izlaz.
DISTINCT na više stupaca
Klauzula SELECT DISTINCT može se primijeniti i na više od jednog stupca. Kada nakon DISTINCT-a navedete više stupaca, PostgreSQL tretira kombinaciju tih stupaca kao jedinicu i uklanja retke u kojima je cijela ta kombinacija duplicirana.
Syntax: SELECT DISTINCT column_1, column_2 FROM table_name;
Na primjer, za vraćanje jedinstvenih kombinacija tutorial_name i id iz tablice tutorials:
SELECT DISTINCT tutorial_name, id FROM tutorials;
U ovom slučaju, redak se uklanja samo kada i naziv_tutoriala i ID odgovaraju drugom retku. Ako dva retka dijele isti naziv_tutoriala, ali imaju različite vrijednosti ID-a, oba se zadržavaju jer je kombinacija i dalje jedinstvena. Važno je zapamtiti ovo ponašanje: DISTINCT ne uklanja duplikate jednog stupca kada je odabrano nekoliko stupaca; uklanja duplikate cijelog skupa odabranih stupaca zajedno.
DISTINCT u odnosu na GROUP BY u PostgreSQL
I DISTINCT i GROUP BY mogu ukloniti duplicirane vrijednosti, ali služe različitim svrhama:
- DISTINCT jednostavno vraća jedinstvene retke iz rezultata i najbolji je kada vam je potrebna samo lista bez duplikata.
- GROUP BY grupira retke koji dijele vrijednost tako da možete primijeniti agregacijske funkcije kao što su COUNT, SUM ili AVG svakoj skupini.
Na primjer, dva upita u nastavku vraćaju jedinstvene ID vrijednosti:
SELECT DISTINCT id FROM tutorials; SELECT id FROM tutorials GROUP BY id;
Koristite DISTINCT za običan popis jedinstvenih vrijednosti, a GROUP BY kada vam je potreban i izračun po grupi, poput brojanja koliko tutorijala dijeli svaki ID. Kod jednostavnih upita planer često daje slične performanse za oboje, ali GROUP BY je potreban kad god je uključena agregacija.
Cheat Sheet
SELECT [column names] FROM [table_name] [clause]
Evo različitih parametara:
- nazivi stupaca: Naziv stupaca čiju vrijednost želite dohvatiti.
- IZ: Klauzula FROM definira jednu ili više izvornih tablica za SELECT.
- naziv_tablice: Naziv postojeće tablice koju želite upitati.
Razne klauzule su:
| Naredbe | Description |
|---|---|
| * | Dohvaća zapise za sve retke u tablici. |
| DISTINCT | DISTINCT in PostgreSQL pomaže vam ukloniti duplikate iz rezultata. |
| NARUČITE PO | Sortira retke na temelju stupca. Zadani redoslijed sortiranja je uzlazni. Za sortiranje silaznim redoslijedom koristite ključnu riječ DESC. |
| OGRANIČAVA | LIMIT u PostgreSQL ograničava broj zapisa koje vraća upit. |









