Co je PostgreSQL Union?
Operátor PostgreSQL UNION se používá pro kombinaci sad výsledků z více než jednoho příkazu SELECT do jedné sady výsledků. Veškeré duplicitní řádky z výsledků příkazů SELECT jsou odstraněny. Provozovatel UNION pracuje za dvou podmínek:
- SELECT dotazy MUSÍ vrátit podobný počet dotazů.
- Datové typy všech odpovídajících sloupců musí být kompatibilní.
Operátor UNION se běžně používá ke kombinaci dat ze souvisejících tabulek, které nebyly normalizovány dokonale.
V tomto tutoriálu PostgreSQL se naučíte:
- Co je PostgreSQL Union?
- Syntax
- unie
- Union All
- SEŘADIT PODLE
- Kdy použít Union a Kdy použít Union all?
- Pomocí pgAdmin
Syntax
SELECT expression_1, expression_2,… expression_nFROM tables[WHERE condition(s)]UNIONSELECT expression_1, expression_2,… expression_nFROM tables[WHERE condition(s)];
Zde je vysvětlení výše uvedených parametrů:
Výraz_1, výraz_2,… výraz_n jsou výpočty nebo sloupce, které potřebujete načíst.
Tabulky jsou tabulky, ze kterých potřebujete načíst záznamy.
Podmínky WHERE jsou podmínky, které musí být splněny, aby mohly být načteny záznamy.
Poznámka: protože operátor UNION nevrací duplikáty, nebude mít použití UNION DISTINCT žádný dopad na výsledky.
unie
Operátor UNION odstraní duplikáty. Ukažme to.
Máme databázi s názvem Demo s následujícími tabulkami:
Rezervovat:
Cena:
Spusťme následující příkaz:
SELECT idFROM BookUNIONSELECT idFROM Price;
Příkaz vrátí následující:
Sloupec id se objeví v tabulkách Book i Price. Ve výsledku se však objeví pouze jednou. Důvodem je, že operátor PostgreSQL UNION nevrací duplikáty.
Union All
Tento operátor kombinuje sady výsledků z více než jednoho příkazu SELECT, aniž by odstranil duplikáty. Provozovatel vyžaduje, aby každý příkaz SELECT měl podobný počet polí ve výsledkových sadách podobných datových typů.
Syntax:
SELECT expression_1, expression_2,… expression_nFROM tables[WHERE condition(s)]UNION ALLSELECT expression_1, expression_2,… expression_nFROM tables[WHERE condition(s)];
Zde je vysvětlení výše uvedených parametrů:
Výraz_1, výraz_2,… výraz_n jsou výpočty nebo sloupce, které potřebujete načíst.
Tabulky jsou tabulky, ze kterých potřebujete načíst záznamy.
Podmínky WHERE jsou podmínky, které musí být splněny, aby mohly být načteny záznamy.
Poznámka: Oba výrazy musí mít stejný počet výrazů.
Použijeme následující tabulky:
Rezervovat:
Cena:
Spusťte následující příkaz:
SELECT idFROM BookUNION ALLSELECT idFROM price;
Mělo by vrátit následující:
Duplikáty nebyly odstraněny.
SEŘADIT PODLE
Operátor PostgreSQL UNION lze použít společně s klauzulí ORDER BY k objednání výsledků dotazu. Abychom to prokázali, použijeme následující tabulky:
Cena:
Cena 2:
Zde je příkaz, který ukazuje, jak používat operátor UNION společně s klauzulí ORDER BY:
SELECT *FROM PriceUNIONSELECT *FROM Price2ORDER BY price;
Příkaz vrátí následující:
Záznamy byly seřazeny podle sloupce ceny. Klauzule ve výchozím nastavení objednává záznamy vzestupně. Chcete-li je seřadit sestupně, přidejte klauzuli DESC, jak je znázorněno níže:
SELECT *FROM PriceUNIONSELECT *FROM Price2ORDER BY price DESC;
Příkaz vrátí následující:
Záznamy byly seřazeny podle sloupce ceny v sestupném pořadí.
Kdy použít Union a Kdy použít Union all?
Operátor UNION použijte, pokud máte více tabulek s podobnou strukturou, ale z nějakého důvodu se dělíte. Je dobré, když potřebujete odstranit / odstranit duplicitní záznamy.
Pokud nepotřebujete odstraňovat / eliminovat duplicitní záznamy, použijte operátor UNION ALL.
Pomocí pgAdmin
Nyní se podívejme, jak se všechny tři akce prováděly pomocí pgAdmin.
unie
Chcete-li toho dosáhnout prostřednictvím pgAdmin, postupujte takto:
Krok 1) Přihlaste se ke svému účtu pgAdmin.
Krok 2)
- Na navigačním panelu vlevo klikněte na Databáze.
- Klikněte na ukázku.
Krok 3) Zadejte dotaz do editoru dotazů:
SELECT *FROM PriceUNIONSELECT *FROM Price2ORDER BY price DESC;
Krok 4) Klikněte na tlačítko Provést.
Mělo by vrátit následující:
Union All
Krok 1) Přihlaste se ke svému účtu pgAdmin.
Krok 2)
- Na navigačním panelu vlevo klikněte na Databáze.
- Klikněte na ukázku.
Krok 3) Zadejte dotaz do editoru dotazů:
SELECT idFROM BookUNION ALLSELECT idFROM price;
Krok 4) Klikněte na tlačítko Provést.
Mělo by vrátit následující:
SEŘADIT PODLE
Operátor UNION ALL lze kombinovat s klauzulí ORDER BY a uspořádat výsledky do sady výsledků. Například:
SELECT idFROM BookUNION ALLSELECT idFROM priceORDER BY id;
Příkaz vrátí následující:
Výsledky byly objednány.
Souhrn:
- Operátor PostgreSQL UNION kombinuje výsledky z více než jednoho příkazu SELECT do jedné sady výsledků.
- Operátor UNION nevrací duplicitní záznamy.
- Chcete-li objednat výsledky, zkombinujte je s klauzulí ORDER BY.
- Operátor UNION ALL kombinuje výsledky z více než jednoho příkazu SELECT do jedné sady výsledků.
- Operátor UNION ALL neodstraní duplikáty.
Stáhněte si databázi použitou v tomto výukovém programu