ROZLIŠIT v PostgreSQL: Select, Order By & Limit (Příklady)

⚡ Chytré shrnutí

ROZLIŠIT v PostgreSQL se používá s příkazem SELECT k odstranění duplicitních řádků a vrácení pouze jedinečných hodnot. Zahrnuje syntaxi příkazu SELECT, SQL Shell a pgAdmin, DISTINCT na jednom a více sloupcích a DISTINCT versus GROUP BY.

  • 🔎 VYBRAT: Načte sloupce z tabulky pomocí příkazu SELECT column FROM table.
  • 🧹 ODLIŠNÝ: Odstraňte duplicitní řádky a ponechte jeden řádek pro každou jedinečnou hodnotu.
  • ↕️ SEŘADIT PODLE: Seřadit vzestupně ve výchozím nastavení nebo sestupně pomocí DESC.
  • 🔢 OMEZIT: Omezte počet záznamů, které dotaz vrací.
  • 🖥️ Nástroje: Spusťte stejné dotazy v SQL Shellu nebo pgAdminu.

ROZLIŠIT v PostgreSQL

Data z tabulky můžete načíst pomocí příkazu SELECT.

Syntaxe:

SELECT [column names] FROM [table_name]

Zde,

  • názvy sloupců: Název sloupců, jejichž hodnotu chcete načíst.
  • OD: Klauzule FROM definuje jednu nebo více zdrojových tabulek pro příkaz SELECT.
  • název_tabulky: Název existující tabulky, kterou chcete dotazovat.

Co je DISTINCT v PostgreSQL?

Jedno DISTINCT klauzule v PostgreSQL se používá s příkazem SELECT k odstranění duplicitních řádků z výsledné sady. Pokud sloupec obsahuje opakující se hodnoty, SELECT DISTINCT vrací pouze jedinečné hodnoty, keeping jeden řádek pro každou skupinu duplikátů. To je užitečné, když chcete seznam odlišných položek, jako jsou například jedinečná města zákazníků nebo kategorie produktů, bez opakování.

Funkce DISTINCT vyhodnocuje všechny sloupce uvedené v příkazu SELECT, aby rozhodla, zda je řádek jedinečný. PostgreSQL Také poskytuje funkci DISTINCT ON, která vrací první řádek pro každou jedinečnou hodnotu zadaného výrazu. Funkci DISTINCT můžete kombinovat s ORDER BY pro řízení zobrazení řádků a s LIMIT pro omezení počtu výsledků.

PostgreSQL Vyberte příkaz v prostředí SQL

Krok 1) Máme tabulku „tutorials“ se 2 sloupci, „id“ a „tutorial_name“. Zadáme do ní dotaz. Pro výpis dat v tabulce použijte následující dotaz:

SELECT id,tutorial_name FROM tutorials;

PostgreSQL Vyberte příkaz v prostředí SQL

POZNÁMKA: Pomocí příkazu \c se připojte k databázi, která obsahuje tabulku, na kterou chcete provést dotaz. V našem případě jsme připojeni k databázi guru99.

Krok 2) Pokud chceme zobrazit všechny sloupce v konkrétní tabulce, můžeme použít zástupný znak hvězdička (*). To znamená, že se kontrolují všechny možnosti a v důsledku toho se vrátí všechny sloupce.

SELECT * FROM tutorials;

PostgreSQL Vyberte příkaz v prostředí SQL

Zobrazí všechny záznamy tabulky výukových programů.

Krok 3) Klauzuli ORDER můžete použít k řazení dat v tabulce na základě určitého sloupce. Klauzule ORDER organizuje data v pořadí od A do Z.

SELECT * FROM tutorials ORDER BY id;

PostgreSQL Vyberte příkaz v prostředí SQL

Můžete třídit od Z do A pomocí „DESC“ po příkazu „ORDER BY“.

SELECT * FROM tutorials ORDER BY id DESC;

PostgreSQL Vyberte příkaz v prostředí SQL

Krok 4) SELECT DISTINCT v PostgreSQL klauzuli lze použít k odstranění duplicitních řádků z výsledku. Uchovává jeden řádek pro každou skupinu duplikátů.

Syntax:
SELECT DISTINCT column_1 FROM table_name;

Pojďme se dotazovat na hodnoty Postgres Select Distinct id z našich tutoriálů pro tabulky pomocí dotazů Distinct v PostgreSQL:

SELECT DISTINCT(id) FROM tutorials;

PostgreSQL Vyberte příkaz v prostředí SQL

Krok 5) Můžete použít PostgreSQL Klauzule LIMIT pro omezení počtu záznamů vrácených dotazem SELECT.

SELECT * FROM tutorials LIMIT 4;

PostgreSQL Vyberte příkaz v prostředí SQL

PostgreSQL Výběr příkazu v pgAdmin

Krok 1) Ve stromové struktuře objektů:

  1. Klikněte pravým tlačítkem myši na tabulku.
  2. Vyberte Skripty.
  3. Klikněte na VYBRAT SKRIP.

PostgreSQL Výběr příkazu v pgAdmin

Krok 2) V panelu vpravo:

  1. V případě potřeby upravte dotaz SELECT.
  2. Klikněte na ikonu blesku.
  3. Pozorujte výstup.

PostgreSQL Výběr příkazu v pgAdmin

DISTINCT ve více sloupcích

Klauzule SELECT DISTINCT se může vztahovat i na více než jeden sloupec. Pokud za klauzulí DISTINCT uvedete více sloupců, PostgreSQL zachází s kombinací těchto sloupců jako s jednotkou a odstraňuje řádky, kde je celá tato kombinace duplikována.

Syntax:
SELECT DISTINCT column_1, column_2 FROM table_name;

Například pro vrácení jedinečných kombinací atributů tutorial_name a id z tabulky tutorials:

SELECT DISTINCT tutorial_name, id FROM tutorials;

V tomto případě se řádek odstraní pouze tehdy, když se hodnoty tutorial_name i id shodují s jiným řádkem. Pokud dva řádky sdílejí stejný tutorial_name, ale mají různé hodnoty id, oba se zachovají, protože jejich kombinace je stále jedinečná. Toto chování je důležité si pamatovat: DISTINCT neodstraňuje duplikáty z jednoho sloupce, pokud je vybráno několik sloupců; odstraňuje duplikáty z celé sady vybraných sloupců najednou.

DISTINCT vs. GROUP BY v PostgreSQL

Funkce DISTINCT i GROUP BY mohou odstranit duplicitní hodnoty, ale slouží různým účelům:

  • DISTINCT jednoduše vrací jedinečné řádky z výsledku a je nejlepší, když potřebujete pouze seznam bez duplicit.
  • SKUPINA VYTVOŘENÁ seskupuje řádky, které sdílejí hodnotu, takže na ně můžete použít agregační funkce, jako například COUNT, SUM nebo AVG každé skupině.

Například dva níže uvedené dotazy vracejí jedinečné hodnoty id:

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

Pro prostý seznam jedinečných hodnot použijte DISTINCT a pro výpočet na skupinu použijte GROUP BY. U jednoduchých dotazů plánovač často dosahuje podobného výkonu pro obě skupiny, ale GROUP BY je vyžadován vždy, když je použita agregace.

Cheat Sheet

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

Zde jsou různé parametry:

  • názvy sloupců: Název sloupců, jejichž hodnotu chcete načíst.
  • OD: Klauzule FROM definuje jednu nebo více zdrojových tabulek pro příkaz SELECT.
  • název_tabulky: Název existující tabulky, kterou chcete dotazovat.

Různé klauzule jsou:

Příkazy Description
* Načte záznamy pro všechny řádky v tabulce.
DISTINCT ROZLIŠIT v PostgreSQL pomáhá vám odstranit duplikáty z výsledku.
SEŘADIT PODLE Seřadí řádky podle sloupce. Výchozí pořadí řazení je vzestupné. Pro sestupné řazení použijte klíčové slovo DESC.
LIMIT LIMIT v PostgreSQL omezuje počet záznamů vrácených dotazem.

Nejčastější dotazy

Ano. Asistenti s umělou inteligencí dokáží převést popis na příkazy SELECT DISTINCT, přidat ORDER BY nebo LIMIT a vysvětlit výsledek. Před spuštěním v produkčním prostředí byste měli dotaz otestovat ve schématu.

Ano. Nástroje umělé inteligence dokáží číst plán dotazu z EXPLAIN ANALYZE a navrhovat indexy nebo přepisovat DISTINCT jako GROUP BY. Návrhy vždy ověřujte pomocí reálných dat, protože výkon závisí na velikosti tabulky a indexech.

Funkce DISTINCT odstraní duplicitní řádky ve všech vybraných sloupcích. Funkce DISTINCT ON (výraz) zachovává první řádek pro každou jedinečnou hodnotu daného výrazu, což umožňuje vybrat jeden řádek na skupinu, obvykle v kombinaci s funkcí ORDER BY.

Funkce DISTINCT může být u velkých tabulek pomalejší, protože musí porovnávat a odstraňovat duplikáty, často pomocí řazení nebo hashování. Správné indexy a omezení počtu vybraných sloupců pomáhají snížit její náklady.

Shrňte tento příspěvek takto: