DISTINCT în PostgreSQL: Selectați, Comandați după și Limitați (Exemple)

⚡ Rezumat inteligent

DISTINCT în PostgreSQL se utilizează cu o instrucțiune SELECT pentru a elimina rândurile duplicate și a returna doar valori unice. Acoperă sintaxa SELECT, SQL Shell și pgAdmin, DISTINCT pe coloane simple și multiple și DISTINCT versus GROUP BY.

  • 🔎 SELECTAȚI: Preluarea coloanelor dintr-un tabel cu funcția SELECT column FROM table.
  • 🧹 DISTINCT: Eliminați rândurile duplicate și păstrați câte un rând pentru fiecare valoare unică.
  • ↕️ COMANDA PENTRU: Sortează crescător în mod implicit sau descrescător cu DESC.
  • 🔢 LIMITĂ: Restricționați numărul de înregistrări returnate de interogare.
  • 🖥️ Unelte: Executați aceleași interogări în SQL Shell sau pgAdmin.

DISTINCT în PostgreSQL

Puteți prelua date din tabel folosind o instrucțiune SELECT.

Sintaxă:

SELECT [column names] FROM [table_name]

Aici,

  • nume de coloane: Numele coloanelor a căror valoare doriți să o recuperați.
  • DIN: Clauza FROM definește unul sau mai multe tabele sursă pentru SELECT.
  • table_name: Numele unui tabel existent pe care doriți să îl interogați.

Ce înseamnă DISTINCT în PostgreSQL?

DISTINCT clauza in PostgreSQL se utilizează cu o instrucțiune SELECT pentru a elimina rândurile duplicate din setul de rezultate. Când o coloană conține valori repetate, SELECT DISTINCT returnează doar valorile unice, păstrațiping un singur rând pentru fiecare grup de duplicate. Acest lucru este util atunci când doriți o listă de intrări distincte, cum ar fi orașe cu clienți unici sau categorii de produse, fără repetiții.

DISTINCT evaluează toate coloanele listate în instrucțiunea SELECT pentru a decide dacă un rând este unic. PostgreSQL De asemenea, oferă DISTINCT ON, care returnează primul rând pentru fiecare valoare distinctă a unei expresii specificate. Puteți combina DISTINCT cu ORDER BY pentru a controla ce rânduri apar și cu LIMIT pentru a limita numărul de rezultate.

PostgreSQL Selectați Declarație în SQL Shell

Pas 1) Avem un tabel „tutoriale” cu 2 coloane, „id” și „nume_tutorial”. Să îl interogăm. Folosim următoarea interogare pentru a lista datele din tabel:

SELECT id,tutorial_name FROM tutorials;

PostgreSQL Selectați Declarație în SQL Shell

NOTĂ: Folosește comanda \c pentru a te conecta la baza de date care conține tabelul pe care dorești să îl interoghezi. În cazul nostru, suntem conectați la baza de date guru99.

Pas 2) Dacă doriți să vizualizați toate coloanele dintr-un anumit tabel, putem folosi caracterul wildcard asterisc (*). Aceasta înseamnă că verifică fiecare posibilitate și, prin urmare, va returna fiecare coloană.

SELECT * FROM tutorials;

PostgreSQL Selectați Declarație în SQL Shell

Afișează toate înregistrările din tabelul de tutoriale.

Pas 3) Puteți folosi clauza ORDER pentru a sorta datele dintr-un tabel pe baza unei anumite coloane. Clauza ORDER organizează datele în ordinea de la A la Z.

SELECT * FROM tutorials ORDER BY id;

PostgreSQL Selectați Declarație în SQL Shell

Puteți sorta de la Z la A folosind „DESC” după instrucțiunea „ORDER BY”.

SELECT * FROM tutorials ORDER BY id DESC;

PostgreSQL Selectați Declarație în SQL Shell

Pas 4) SELECT DISTINCT în PostgreSQL clauza poate fi folosită pentru a elimina rândurile duplicate din rezultat. Păstrează un rând pentru fiecare grup de duplicate.

Syntax:
SELECT DISTINCT column_1 FROM table_name;

Să interogăm valorile Postgres Select Distinct id din tutorialele noastre de tabel folosind interogări distincte în PostgreSQL:

SELECT DISTINCT(id) FROM tutorials;

PostgreSQL Selectați Declarație în SQL Shell

Pas 5) Aveți posibilitatea să utilizați PostgreSQL Clauza LIMIT pentru a restricționa numărul de înregistrări returnate de interogarea SELECT.

SELECT * FROM tutorials LIMIT 4;

PostgreSQL Selectați Declarație în SQL Shell

PostgreSQL Instrucțiune Select în pgAdmin

Pas 1) În arborele de obiecte:

  1. Faceți clic dreapta pe Tabel.
  2. Selectați Scripturi.
  3. Faceți clic pe SELECTARE SCRIPT.

PostgreSQL Instrucțiune Select în pgAdmin

Pas 2) În panoul din dreapta:

  1. Editați interogarea SELECT dacă este necesar.
  2. Faceți clic pe pictograma Fulger.
  3. Observați rezultatul.

PostgreSQL Instrucțiune Select în pgAdmin

DISTINCT pe mai multe coloane

Clauza SELECT DISTINCT se poate aplica și la mai multe coloane. Când listați mai multe coloane după DISTINCT, PostgreSQL tratează combinația acelor coloane ca o unitate și elimină rândurile în care întreaga combinație este duplicată.

Syntax:
SELECT DISTINCT column_1, column_2 FROM table_name;

De exemplu, pentru a returna combinațiile unice de tutorial_name și id din tabelul tutorials:

SELECT DISTINCT tutorial_name, id FROM tutorials;

În acest caz, un rând este eliminat numai atunci când atât tutorial_name, cât și id se potrivesc cu un alt rând. Dacă două rânduri au același tutorial_name, dar au valori id diferite, ambele sunt păstrate, deoarece combinația este în continuare unică. Este important de reținut acest comportament: DISTINCT nu deduplică o singură coloană atunci când sunt selectate mai multe coloane; deduplică întregul set de coloane selectate împreună.

DISTINCT vs. GROUP BY în PostgreSQL

Atât DISTINCT, cât și GROUP BY pot elimina valorile duplicate, dar au scopuri diferite:

  • DISTINCT returnează pur și simplu rânduri unice din rezultat și este cea mai bună opțiune atunci când aveți nevoie doar de o listă deduplicată.
  • A SE GRUPA CU grupează rândurile care au în comun o valoare, astfel încât să puteți aplica funcții agregate precum COUNT, SUM sau AVG fiecărui grup.

De exemplu, cele două interogări de mai jos returnează valorile unice de identificare:

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

Folosește DISTINCT pentru o listă simplă de valori unice și folosește GROUP BY atunci când ai nevoie și de un calcul per grup, cum ar fi numărarea câte tutoriale au în comun fiecare ID. În cazul interogărilor simple, planificatorul produce adesea performanțe similare pentru ambele, dar GROUP BY este necesar ori de câte ori este implicată agregarea.

Cheat Sheet

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

Iată diverșii parametri:

  • nume de coloane: Numele coloanelor a căror valoare doriți să o recuperați.
  • DIN: Clauza FROM definește unul sau mai multe tabele sursă pentru SELECT.
  • table_name: Numele unui tabel existent pe care doriți să îl interogați.

Diverse clauze sunt:

Comenzi Descriere
* Preia înregistrări pentru toate rândurile din tabel.
DISTINCT DISTINCT în PostgreSQL vă ajută să eliminați duplicatele din rezultat.
COMANDA DE Sortează rândurile în funcție de o coloană. Ordinea de sortare implicită este crescătoare. Folosiți cuvântul cheie DESC pentru a sorta în ordine descrescătoare.
LIMITĂ LIMITĂ în PostgreSQL restricționează numărul de înregistrări returnate de interogare.

Întrebări frecvente

Da. Asistenții inteligenți artificiali pot transforma o descriere în instrucțiuni SELECT DISTINCT, pot adăuga ORDER BY sau LIMIT și pot explica rezultatul. Ar trebui să testați totuși interogarea pe schema dvs. înainte de a o rula în producție.

Da. Instrumentele de inteligență artificială pot citi planul de interogare din EXPLAIN ANALYZE și pot sugera indexuri sau rescrierea lui DISTINCT ca GROUP BY. Validați întotdeauna sugestiile cu date reale, deoarece performanța depinde de dimensiunea tabelului și de indexuri.

DISTINCT elimină rândurile duplicate din toate coloanele selectate. DISTINCT ON (expresie) păstrează primul rând pentru fiecare valoare distinctă a acelei expresii, permițându-vă să alegeți un rând per grup, de obicei combinat cu ORDER BY.

DISTINCT poate fi mai lent pe tabele mari, deoarece trebuie să compare și să elimine duplicatele, adesea folosind o sortare sau un hash. Indexurile adecvate și limitarea coloanelor selectate ajută la reducerea costului său.

Rezumați această postare cu: