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.

  • 🔎 ODABERI: Dohvati stupce iz tablice pomoću naredbe SELECT column FROM table.
  • 🧹 DISTINKTNO: Uklonite duplicirane retke i zadržite jedan redak po jedinstvenoj vrijednosti.
  • ↕️ REDAJ PO: Sortiraj uzlazno prema zadanim postavkama ili silazno pomoću DESC.
  • 🔢 OGRANIČITI: Ograničite broj zapisa koje upit vraća.
  • 🖥️ Alati: Pokrenite iste upite u SQL Shellu ili pgAdminu.

DISTINCT in PostgreSQL

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;

PostgreSQL Odaberite Izjava u SQL ljusci

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;

PostgreSQL Odaberite Izjava u SQL ljusci

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;

PostgreSQL Odaberite Izjava u SQL ljusci

Možete sortirati od Z do A koristeći "DESC" nakon naredbe "ORDER BY".

SELECT * FROM tutorials ORDER BY id DESC;

PostgreSQL Odaberite Izjava u SQL ljusci

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;

PostgreSQL Odaberite Izjava u SQL ljusci

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 Izjava u SQL ljusci

PostgreSQL Odaberite naredbu u pgAdminu

Korak 1) U stablu objekata:

  1. Desni klik na tablicu.
  2. Odaberite Skripte.
  3. Kliknite na ODABERI SKRIPTU.

PostgreSQL Odaberite naredbu u pgAdminu

Korak 2) U ploči s desne strane:

  1. Uredite SELECT upit ako je potrebno.
  2. Kliknite ikonu Munje.
  3. Promatrajte izlaz.

PostgreSQL Odaberite naredbu u pgAdminu

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.

Pitanja i odgovori

Da. AI asistenti mogu pretvoriti opis u SELECT DISTINCT naredbe, dodati ORDER BY ili LIMIT i objasniti rezultat. Ipak biste trebali testirati upit na svojoj shemi prije nego što ga pokrenete u produkciji.

Da. Alati umjetne inteligencije mogu čitati plan upita iz EXPLAIN ANALYZE i predlagati indekse ili prepisivanje DISTINCT kao GROUP BY. Uvijek provjerite prijedloge sa stvarnim podacima, budući da performanse ovise o veličini tablice i indeksima.

DISTINCT uklanja duplicirane retke u svim odabranim stupcima. DISTINCT ON (izraz) zadržava prvi redak za svaku zasebnu vrijednost tog izraza, omogućujući vam odabir jednog retka po grupi, obično u kombinaciji s ORDER BY.

DISTINCT može biti sporiji na velikim tablicama jer mora uspoređivati ​​i uklanjati duplikate, često koristeći sortiranje ili hash. Ispravni indeksi i ograničavanje stupaca koje odaberete pomažu u smanjenju troškova.

Sažmite ovu objavu uz: