DISTINCT in PostgreSQL: Valige, tellige ja piirake (näited)

⚡ Nutikas kokkuvõte

DISTINCT in PostgreSQL kasutatakse koos SELECT-lausega duplikaatridade eemaldamiseks ja ainult unikaalsete väärtuste tagastamiseks. See hõlmab SELECT-süntaksit, SQL-kesta ja pgAdmini, DISTINCT-i ühe ja mitme veeru puhul ning DISTINCT-i ja GROUP BY-i erinevust.

  • 🔎 VALI: Tabelist veergude toomine käsuga SELECT column FROM table.
  • 🧹 ERINEV: Eemalda duplikaatread ja jäta iga unikaalse väärtuse kohta alles üks rida.
  • ↕️ TELLI: Sorteeri vaikimisi kasvavalt või kahanevalt DESC-iga.
  • 🔢 PIIRANG: Piira päringu tagastatavate kirjete arvu.
  • 🖥️ Vahendid: Käivita samad päringud SQL-shellis või pgAdminis.

DISTINCT in PostgreSQL

Saate tabelist andmeid hankida SELECT-lause abil.

süntaksit:

SELECT [column names] FROM [table_name]

Siin

  • veergude nimed: Veergude nimed, mille väärtust soovite hankida.
  • FROM: FROM-klausel määratleb SELECT-i jaoks ühe või mitu lähtetabelit.
  • tabeli_nimi: Olemasoleva tabeli nimi, millele soovite päringu esitada.

Mis on DISTINCT PostgreSQL?

. DISTINCT klausel PostgreSQL kasutatakse koos SELECT-lausega tulemuste hulgast duplikaatridade eemaldamiseks. Kui veerg sisaldab korduvaid väärtusi, tagastab SELECT DISTINCT ainult unikaalsed väärtused, säilitadesping üks rida iga duplikaatide rühma kohta. See on kasulik, kui soovite loendit erinevatest kirjetest, näiteks unikaalsetest klientide linnadest või tootekategooriatest, ilma kordusteta.

Funktsioon DISTINCT hindab kõiki SELECT-lauses loetletud veerge, et otsustada, kas rida on unikaalne. PostgreSQL pakub ka funktsiooni DISTINCT ON, mis tagastab määratud avaldise iga erineva väärtuse esimese rea. Funktsiooni DISTINCT saab kombineerida funktsiooniga ORDER BY, et kontrollida, millised read kuvatakse, ja funktsiooniga LIMIT, et piirata tulemuste arvu.

PostgreSQL Valige SQL Shellis avaldus

Step 1) Meil on tabel „õpetused“ kahe veeruga, „id“ ja „õpetuse_nimi“. Pärime selle. Kasutage tabelis andmete loetlemiseks järgmist päringut:

SELECT id,tutorial_name FROM tutorials;

PostgreSQL Valige SQL Shellis avaldus

MÄRKUS: Käsu \c abil loo ühendus andmebaasiga, mis sisaldab tabelit, mida soovid päringuga esitada. Meie puhul oleme ühendatud andmebaasiga guru99.

Step 2) Kui soovite vaadata kõiki veerge konkreetses tabelis, saame kasutada tärni (*) metamärki. See tähendab, et see kontrollib kõiki võimalusi ja tagastab tulemuse iga veeru.

SELECT * FROM tutorials;

PostgreSQL Valige SQL Shellis avaldus

See kuvab kõik õpetuste tabeli kirjed.

Step 3) Tabelis olevate andmete sortimiseks konkreetse veeru alusel saate kasutada klauslit ORDER. TELLIMUSklausel korraldab andmed järjekorras A kuni Z.

SELECT * FROM tutorials ORDER BY id;

PostgreSQL Valige SQL Shellis avaldus

Saate sortida Z-st A-ni, kasutades käsku "ORDER BY" järel "DESC".

SELECT * FROM tutorials ORDER BY id DESC;

PostgreSQL Valige SQL Shellis avaldus

Step 4) SELECT DISTINCT sisse PostgreSQL klauslit saab kasutada tulemusest dubleerivate ridade eemaldamiseks. See säilitab ühe rea iga duplikaatide rühma jaoks.

Syntax:
SELECT DISTINCT column_1 FROM table_name;

Pärime Postgresi abil meie tabeliõpetustest erinevaid ID-väärtusi, kasutades erinevaid päringuid PostgreSQL:

SELECT DISTINCT(id) FROM tutorials;

PostgreSQL Valige SQL Shellis avaldus

Step 5) Võite kasutada PostgreSQL LIMIT-klausel SELECT-päringu tagastatavate kirjete arvu piiramiseks.

SELECT * FROM tutorials LIMIT 4;

PostgreSQL Valige SQL Shellis avaldus

PostgreSQL Valige pgAdminis avaldus

Step 1) Objektipuus:

  1. Paremklõpsake tabelil.
  2. Valige Skriptid.
  3. Klõpsake nuppu VALI SKRIPTI.

PostgreSQL Valige pgAdminis avaldus

Step 2) Parempoolsel paneelil:

  1. Vajadusel muutke SELECT-päringut.
  2. Klõpsake välguikoonil.
  3. Jälgige väljundit.

PostgreSQL Valige pgAdminis avaldus

DISTINCT mitmel veerul

SELECT DISTINCT-klauslit saab rakendada ka mitmele veerule. Kui loetlete pärast DISTINCT-klauslit mitu veergu, PostgreSQL käsitleb nende veergude kombinatsiooni ühikuna ja eemaldab read, kus kogu see kombinatsioon dubleeritakse.

Syntax:
SELECT DISTINCT column_1, column_2 FROM table_name;

Näiteks õpetuste tabelist õpetuse_nime ja ID unikaalsete kombinatsioonide tagastamiseks:

SELECT DISTINCT tutorial_name, id FROM tutorials;

Sellisel juhul eemaldatakse rida ainult siis, kui nii tutorial_name kui ka id vastavad teisele reale. Kui kahel real on sama tutorial_name, kuid erinevad ID väärtused, säilitatakse mõlemad, kuna kombinatsioon on endiselt unikaalne. Seda käitumist on oluline meeles pidada: DISTINCT ei deduplikeeri ühte veergu, kui valitud on mitu veergu; see deduplikeerib kõik valitud veerud korraga.

DISTINCT vs GROUP BY PostgreSQL

Nii DISTINCT kui ka GROUP BY saavad eemaldada duplikaatväärtusi, kuid neil on erinevad eesmärgid:

  • DISTINCT tagastab tulemusest lihtsalt unikaalsed read ja on parim valik siis, kui vajate ainult dubleeritud loendit.
  • GROUP BY rühmitab read, millel on ühine väärtus, et saaksite rakendada koondfunktsioone (nt COUNT, SUM või AVG igale rühmale.

Näiteks tagastavad kaks allolevat päringut mõlemad unikaalsed ID-väärtused:

SELECT DISTINCT id FROM tutorials;
SELECT id FROM tutorials GROUP BY id;

Kasutage funktsiooni DISTINCT unikaalsete väärtuste lihtsa loendi jaoks ja GROUP BY, kui vajate arvutust ka rühmade kaupa, näiteks kui loendate, mitu õpetust jagavad sama ID-d. Lihtsate päringute korral annab planeerija sageli mõlema jaoks sarnase jõudluse, kuid GROUP BY on vajalik alati, kui tegemist on liitmisega.

Cheat Sheet

SELECT [column names] FROM [table_name] [clause]

Siin on erinevad parameetrid:

  • veergude nimed: Veergude nimed, mille väärtust soovite hankida.
  • FROM: FROM-klausel määratleb SELECT-i jaoks ühe või mitu lähtetabelit.
  • tabeli_nimi: Olemasoleva tabeli nimi, millele soovite päringu esitada.

Erinevad klauslid on:

Käsud Kirjeldus
* Toob kirjed tabeli kõigi ridade kohta.
DISTINCT DISTINCT in PostgreSQL aitab teil tulemusest duplikaate eemaldada.
TELLI Sorteerib ridu veeru alusel. Vaikimisi on sortimisjärjekord kasvav. Kahanevas järjekorras sortimiseks kasutage märksõna DESC.
LIMIT LIMIT sisse PostgreSQL piirab päringuga tagastatavate kirjete arvu.

KKK

Jah. Tehisintellekti assistendid saavad kirjelduse muuta SELECT DISTINCT lauseteks, lisada ORDER BY või LIMIT avaldised ja selgitada tulemust. Enne päringu tootmiskeskkonnas käivitamist peaksite seda siiski oma skeemil testima.

Jah. Tehisintellekti tööriistad saavad päringuplaani lugeda EXPLAIN ANALYZE'ist ja soovitada indekseid või kirjutada DISTINCT ümber GROUP BY-ks. Kinnitage soovitused alati tegelike andmetega, kuna jõudlus sõltub tabeli suurusest ja indeksitest.

Funktsioon DISTINCT eemaldab duplikaatread kõigist valitud veergudest. Funktsioon DISTINCT ON (avaldis) säilitab avaldise iga erineva väärtuse esimese rea, võimaldades teil valida ühe rea rühma kohta, tavaliselt kombineerituna funktsiooniga ORDER BY.

DISTINCT võib suurte tabelite puhul olla aeglasem, kuna see peab võrdlema ja eemaldama duplikaate, sageli sortimise või räsi abil. Õiged indeksid ja valitud veergude piiramine aitavad selle maksumust vähendada.

Võta see postitus kokku järgmiselt: