DISTINCT in PostgreSQL: Kiválasztás, rendelés és határérték (példák)

⚡ Okos összefoglaló

DISTINCT in PostgreSQL A SELECT utasítással együtt használatos a duplikált sorok eltávolítására és csak az egyedi értékek visszaadására. Lefedi a SELECT szintaxist, az SQL Shell-t és a pgAdmin-t, a DISTINCT függvényt egy- és többoszlopos esetekben, valamint a DISTINCT és a GROUP BY használatát.

  • ???? KIVÁLASZTÁS: Oszlopok lekérése egy táblából a SELECT oszlop FROM table paranccsal.
  • 🧹 KÜLÖNBÖZŐ: Távolítsa el az ismétlődő sorokat, és egyedi értékenként egy sort tartson meg.
  • ↕️ RENDEZÉS: Rendezés alapértelmezés szerint növekvő, vagy csökkenő sorrendben DESC szerint.
  • 🔢 HATÁR: Korlátozza a lekérdezés által visszaadott rekordok számát.
  • 🖥️ Eszközök: Futtassa ugyanazokat a lekérdezéseket az SQL Shellben vagy a pgAdminban.

DISTINCT in PostgreSQL

A táblából SELECT utasítással lehet adatokat lekérni.

Syntax:

SELECT [column names] FROM [table_name]

Itt,

  • oszlopnevek: Azon oszlopok neve, amelyek értékét le szeretné kérni.
  • TÓL TŐL: A FROM záradék egy vagy több forrástáblát definiál a SELECT számára.
  • táblázat_neve: Egy meglévő tábla neve, amelyet lekérdezni szeretne.

Mi a DISTINCT a következőben: PostgreSQL?

Az KÜLÖNBÖZŐ záradék PostgreSQL A SELECT utasítással együtt használható az eredményhalmazból ismétlődő sorok eltávolítására. Ha egy oszlop ismétlődő értékeket tartalmaz, a SELECT DISTINCT csak az egyedi értékeket adja vissza, megtartva aping egyetlen sor minden ismétlődéscsoporthoz. Ez akkor hasznos, ha különálló bejegyzések, például egyedi ügyfélvárosok vagy termékkategóriák ismétlődés nélküli listáját szeretné.

A DISTINCT függvény kiértékeli a SELECT utasításban felsorolt ​​összes oszlopot annak eldöntéséhez, hogy egy sor egyedi-e. PostgreSQL A DISTINCT ON függvényt is biztosítja, amely egy megadott kifejezés minden egyes különböző értékéhez az első sort adja vissza. A DISTINCT és az ORDER BY függvényeket kombinálva szabályozhatja, hogy mely sorok jelenjenek meg, a LIMIT függvénnyel pedig korlátozhatja az eredmények számát.

PostgreSQL Válassza a Nyilatkozat az SQL Shellben lehetőséget

Step 1) Van egy „tutorials” táblázatunk két oszloppal, „id” és „tutorial_name”. Kérdezzük le. Használjuk a következő lekérdezést a táblázat adatainak listázásához:

SELECT id,tutorial_name FROM tutorials;

PostgreSQL Válassza a Nyilatkozat az SQL Shellben lehetőséget

JEGYZET: A \c parancs használatával csatlakozz ahhoz az adatbázishoz, amely a lekérdezni kívánt táblát tartalmazza. Esetünkben a guru99 adatbázishoz csatlakozunk.

Step 2) Ha egy adott táblázat összes oszlopát meg szeretnéd tekinteni, használhatod a csillag (*) helyettesítő karaktert. Ez azt jelenti, hogy minden lehetőséget ellenőriz, és ennek eredményeként minden oszlopot visszaad.

SELECT * FROM tutorials;

PostgreSQL Válassza a Nyilatkozat az SQL Shellben lehetőséget

Megjeleníti az oktatóanyagok táblázatának összes rekordját.

Step 3) Az ORDER záradék segítségével egy adott oszlop alapján rendezheti az adatokat egy táblázatban. Az ORDER záradék A-tól Z-ig rendezi az adatokat.

SELECT * FROM tutorials ORDER BY id;

PostgreSQL Válassza a Nyilatkozat az SQL Shellben lehetőséget

Z-ről A-ra rendezheti a „DESC” parancsot az „ORDER BY” utasítás után.

SELECT * FROM tutorials ORDER BY id DESC;

PostgreSQL Válassza a Nyilatkozat az SQL Shellben lehetőséget

Step 4) A SELECT DISTINCT PostgreSQL záradék használható a duplikált sorok eltávolítására az eredményből. Minden ismétlődő csoporthoz egy sort tart.

Syntax:
SELECT DISTINCT column_1 FROM table_name;

Lekérdezzük le a Postgres Select Distinct id értékeket a tábla oktatóanyagainkból, különböző lekérdezéseket használva PostgreSQL:

SELECT DISTINCT(id) FROM tutorials;

PostgreSQL Válassza a Nyilatkozat az SQL Shellben lehetőséget

Step 5) Használhatja a PostgreSQL LIMIT záradék a SELECT lekérdezés által visszaadott rekordok számának korlátozására.

SELECT * FROM tutorials LIMIT 4;

PostgreSQL Válassza a Nyilatkozat az SQL Shellben lehetőséget

PostgreSQL Válassza ki az utasítást a pgAdmin-ban

Step 1) Az objektumfában:

  1. Kattintson jobb gombbal a táblázatra.
  2. Válassza a Szkriptek lehetőséget.
  3. Kattintson a SZKRIPT KIVÁLASZTÁSA gombra.

PostgreSQL Válassza ki az utasítást a pgAdmin-ban

Step 2) A jobb oldali panelen:

  1. Szükség esetén szerkessze a SELECT lekérdezést.
  2. Kattintson a Villám ikonra.
  3. Figyeld meg a kimenetet.

PostgreSQL Válassza ki az utasítást a pgAdmin-ban

DISTINCT több oszlopban

A SELECT DISTINCT záradék több oszlopra is vonatkozhat. Ha a DISTINCT után több oszlopot sorolunk fel, PostgreSQL az oszlopok kombinációját egységként kezeli, és eltávolítja azokat a sorokat, ahol a teljes kombináció ismétlődik.

Syntax:
SELECT DISTINCT column_1, column_2 FROM table_name;

Például a tutorials táblából a tutorial_name és id egyedi kombinációinak visszaadásához:

SELECT DISTINCT tutorial_name, id FROM tutorials;

Ebben az esetben egy sor csak akkor törlődik, ha mind a tutorial_name, mind az id egyezik egy másik sorral. Ha két sor ugyanazzal a tutorial_name-mel rendelkezik, de eltérő azonosító értékekkel, akkor mindkettő megmarad, mivel a kombináció továbbra is egyedi. Fontos megjegyezni ezt a viselkedést: a DISTINCT nem deduplikálja egyetlen oszlopot, ha több oszlop van kijelölve; egyszerre deduplikálja az összes kiválasztott oszlopot.

DISTINCT vs. GROUP BY PostgreSQL

Mind a DISTINCT, mind a GROUP BY képes eltávolítani az ismétlődő értékeket, de különböző célokat szolgálnak:

  • KÜLÖNBÖZŐ egyszerűen egyedi sorokat ad vissza az eredményből, és akkor a legjobb, ha csak egy duplikált listára van szükséged.
  • CSOPORTOSÍT csoportosítja a közös értékű sorokat, így összesítő függvényeket, például COUNT, SUM vagy AVG minden egyes csoportnak.

Például az alábbi két lekérdezés is egyedi azonosítóértékeket ad vissza:

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

Használd a DISTINCT függvényt egyedi értékek egyszerű listájához, és a GROUP BY függvényt, ha csoportonkénti számításra is szükséged van, például annak megszámolására, hogy hány oktatóanyag osztozik az egyes azonosítókon. Egyszerű lekérdezéseknél a tervező gyakran hasonló teljesítményt produkál mindkettőnél, de a GROUP BY szükséges, ha összesítésről van szó.

Puska

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

Íme a különböző paraméterek:

  • oszlopnevek: Azon oszlopok neve, amelyek értékét le szeretné kérni.
  • TÓL TŐL: A FROM záradék egy vagy több forrástáblát definiál a SELECT számára.
  • táblázat_neve: Egy meglévő tábla neve, amelyet lekérdezni szeretne.

Különféle záradékok a következők:

Parancsok Leírás
* Lekéri a táblázat összes sorának rekordjait.
KÜLÖNBÖZŐ DISTINCT in PostgreSQL segít eltávolítani a duplikátumokat az eredményből.
RENDEZÉS A sorokat oszlopok alapján rendezi. Az alapértelmezett rendezési sorrend növekvő. Csökkenő sorrendbe rendezéshez használja a DESC kulcsszót.
LIMIT LIMIT benne PostgreSQL korlátozza a lekérdezés által visszaadott rekordok számát.

GYIK

Igen. A mesterséges intelligencia asszisztensek képesek a leírásokat SELECT DISTINCT utasításokká alakítani, ORDER BY vagy LIMIT utasításokat hozzáadni, és elmagyarázni az eredményt. A lekérdezést továbbra is tesztelni kell a sémán, mielőtt éles környezetben futtatnád.

Igen. A mesterséges intelligencia eszközei képesek beolvasni az EXPLAIN ANALYZE lekérdezési tervét, és indexeket javasolni, vagy a DISTINCT-et GROUP BY-ként átírni. A javaslatokat mindig valós adatokkal kell validálni, mivel a teljesítmény a tábla méretétől és az indexektől függ.

A DISTINCT eltávolítja az ismétlődő sorokat az összes kijelölt oszlopból. A DISTINCT ON (kifejezés) függvény megőrzi az adott kifejezés minden egyes egyedi értékének első sorát, lehetővé téve egy sor kiválasztását csoportonként, általában az ORDER BY függvénnyel kombinálva.

A DISTINCT függvény nagy táblázatokon lassabb lehet, mivel össze kell hasonlítania és el kell távolítania a duplikált elemeket, gyakran rendezést vagy hash-t használva. A megfelelő indexek és a kiválasztott oszlopok korlátozása segít csökkenteni a költségeit.

Foglald össze ezt a bejegyzést a következőképpen: