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.

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;
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;
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;
Saate sortida Z-st A-ni, kasutades käsku "ORDER BY" järel "DESC".
SELECT * FROM tutorials ORDER BY id DESC;
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;
Step 5) Võite kasutada PostgreSQL LIMIT-klausel SELECT-päringu tagastatavate kirjete arvu piiramiseks.
SELECT * FROM tutorials LIMIT 4;
PostgreSQL Valige pgAdminis avaldus
Step 1) Objektipuus:
- Paremklõpsake tabelil.
- Valige Skriptid.
- Klõpsake nuppu VALI SKRIPTI.
Step 2) Parempoolsel paneelil:
- Vajadusel muutke SELECT-päringut.
- Klõpsake välguikoonil.
- Jälgige väljundit.
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. |








