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.

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;
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;
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;
Můžete třídit od Z do A pomocí „DESC“ po příkazu „ORDER BY“.
SELECT * FROM tutorials ORDER BY id DESC;
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;
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 Výběr příkazu v pgAdmin
Krok 1) Ve stromové struktuře objektů:
- Klikněte pravým tlačítkem myši na tabulku.
- Vyberte Skripty.
- Klikněte na VYBRAT SKRIP.
Krok 2) V panelu vpravo:
- V případě potřeby upravte dotaz SELECT.
- Klikněte na ikonu blesku.
- Pozorujte výstup.
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. |








