Klauzule PostgreSQL IN

Klauzule Postgresql In



V PostgreSQL můžete využít spoustu klauzulí. Klauzule IN je jednou z těchto klauzulí a má spoustu výhod, když pochopíte, jak ji používat, zejména v kombinaci s klauzulí WHERE. Klauzule IN funguje hlavně s příkazem SELECT k filtrování toho, jak chcete dotaz provést. Po spuštění klauzule IN zkontroluje zadaný seznam, aby zjistil, zda odpovídá kritériím, a vydá odpovídající hodnoty.

Pochopení toho, jak pracovat s klauzulí IN PostgreSQL

V PostgreSQL použijete klauzuli IN s klauzulí WHERE k filtrování výstupu kontrolou podle seznamu hodnot a výsledkem je booleovská hodnota.

Zde je syntaxe k použití:







hodnota IN (hodnota1, hodnota2, hodnota_n);

Daná syntaxe převezme hodnotu a porovná ji s hodnotou1, hodnotou2 a hodnotou_n. V případě shody pak vrátí booleovskou hodnotu. Seznam hodnot ke kontrole může být libovolného doslovného typu včetně řetězců a celých čísel. Kromě toho můžete vytvořit poddotaz, například příkaz SELECT.



Pojďme diskutovat o různých způsobech použití operátoru PostgreSQL IN.



1. Práce s poddotazem

Jak jsme již zmínili dříve, hodnotou ke kontrole může být poddotaz, který extrahuje hodnoty pomocí příkazu dotazu, jako je SELECT. Tímto způsobem můžete dotazovat tabulku a zkontrolovat hodnoty daného sloupce. Pro náš příklad použijeme následující tabulku:





Předpokládejme, že chceme zkontrolovat všechny zákazníky, jejichž „id_objednávky“ může být jakákoli z hodnot uvedených v sekci dotazu. Cílovou hodnotu přidáme jako první část našeho příkazu a poté použijeme klauzuli WHERE s klauzulí IN k vytvoření dotazu.



Náš dotaz vypadá takto:

PostgreSQL zkontroluje sloupec „order_id“ v tabulce „customers“ a vrátí všechny záznamy, jejichž „order_id“ odpovídá některému z těch, které jsme uvedli v závorkách.

V prvním případě jsme použili případ celočíselného seznamu hodnot. Můžeme také zkontrolovat proti řetězcům. Všimněte si, že pokud všechny zadané řetězce neodpovídají cílové hodnotě, nebude vráceno nic. Následující příklad obsahuje některé řetězce, které v naší tabulce nejsou. Takové řetězce budou přeskočeny a v následujícím výstupu se zobrazí pouze odpovídající řetězce:

2. Práce s IN(SELECT)

Někdy nemusí ruční zadání seznamu hodnot fungovat. Můžete se rozhodnout použít příkaz SELECT k načtení seznamu hodnot z tabulky a použít je ke kontrole s cílovou hodnotou. Přidáním následující tabulky do naší databáze ji můžeme zkombinovat s předchozí tabulkou „zákazníci“ a vytvořit náš poddotaz:

Řekněme, že chceme zobrazit záznamy z tabulky „objednávky“, pouze pokud je cílová hodnota (id_objednávky) v tabulce „zákazníci“. Zde je sloupec „customers.order_id“ naším seznamem hodnot a jeho hodnoty porovnáváme s hodnotami ve sloupci „orders.order_id“.

V tomto případě odpovídají vyhledávání pouze tři položky a to je to, co dostáváme jako výstup pro naši klauzuli IN(SELECT) PostgreSQL.

3. Práce s klauzulí NOT IN PostgreSQL

Pomocí předchozího příkazu můžeme zvolit zobrazení ostatních hodnot, které neodpovídají cílové hodnotě. Za tímto účelem děláme opak toho, co dělá klauzule IN. Proto negujeme příkaz být NOT IN.

Zde je návod, jak zapíšeme náš nový příkaz:

Všimněte si, že dostáváme jiný výstup, než jaký jsme dostali v příkladu 2. Je to proto, že pracujeme s klauzulí NOT IN místo klauzule IN.

V ideálním případě můžete přidat NOT, kdykoli chcete negovat výsledky, které získáte pomocí klauzule PostgreSQL IN. Aplikace jsou nekonečné. Pokud chcete zkontrolovat hodnoty a rychle je vidět, jak se shodují, je klauzule IN vaším nejlepším přítelem.

Závěr

Klauzule IN pracuje s klauzulí WHERE pro kontrolu cílové hodnoty se seznamem hodnot. Klauzule IN vrací booleovskou hodnotu, která potvrzuje, zda se cílová hodnota shoduje v seznamu hodnot, který jste zadali. Hodnoty můžete zadat jako literály nebo pomocí příkazu SELECT vytvořit poddotaz, který chcete použít. Uvedli jsme tři příklady, jak můžete použít klauzuli PostgreSQL IN. Doufejme, že vám to poskytlo informace o tom, jak pracovat s klauzulí PostgreSQL IN.