Klauzula PostgreSQL IN

Klauzula Postgresql In



Existuje veľa klauzúl, ktoré môžete použiť v PostgreSQL. Klauzula IN je jednou z týchto klauzúl a má veľa výhod, keď pochopíte, ako ju používať, najmä v kombinácii s klauzulou WHERE. Klauzula IN funguje hlavne s príkazom SELECT na filtrovanie spôsobu, akým sa má dotaz vykonať. Po spustení klauzula IN skontroluje špecifikovaný zoznam, či sa zhoduje s kritériami a vydá zodpovedajúce hodnoty.

Pochopenie, ako pracovať s klauzulou IN PostgreSQL

V PostgreSQL použijete klauzulu IN s klauzulou WHERE na filtrovanie výstupu porovnaním so zoznamom hodnôt a výsledkom je booleovská hodnota.

Tu je syntax, ktorú treba použiť:







hodnota IN (hodnota1, hodnota2, hodnota_n);

Daná syntax preberá hodnotu a porovnáva ju s hodnotami1, hodnota2 a hodnota_n. Potom vráti booleovskú hodnotu, ak existuje zhoda. Zoznam hodnôt na kontrolu môže byť ľubovoľného doslovného typu vrátane reťazcov a celých čísel. Okrem toho môžete vytvoriť poddotaz, ako je napríklad príkaz SELECT.



Poďme diskutovať o rôznych spôsoboch použitia operátora PostgreSQL IN.



1. Práca s poddotazom

Ako sme už spomenuli, hodnota na kontrolu môže byť poddotaz, ktorý extrahuje hodnoty pomocou príkazu dotazu, ako je napríklad SELECT. Týmto spôsobom môžete dotazovať tabuľku a skontrolovať hodnoty daného stĺpca. Ako príklad použijeme nasledujúcu tabuľku:





Predpokladajme, že chceme skontrolovať všetkých zákazníkov, ktorých „order_id“ môže byť niektorá z hodnôt uvedených v sekcii dotazu. Cieľovú hodnotu pridáme ako prvú časť nášho príkazu a potom na vytvorenie dotazu použijeme klauzulu WHERE s klauzulou IN.



Náš dopyt vyzerá takto:

PostgreSQL skontroluje stĺpec „order_id“ v tabuľke „customers“ a vráti všetky záznamy, ktorých „order_id“ sa zhoduje s ktorýmkoľvek z tých, ktoré sme zadali v zátvorkách.

V prvom prípade sme použili prípad celočíselného zoznamu hodnôt. Môžeme kontrolovať aj podľa šnúrok. Upozorňujeme, že ak všetky zadané reťazce nezodpovedajú cieľovej hodnote, nevráti sa nič. Nasledujúci príklad obsahuje niektoré reťazce, ktoré sa nenachádzajú v našej tabuľke. Takéto reťazce budú preskočené a v nasledujúcom výstupe sa zobrazia iba zodpovedajúce reťazce:

2. Práca s IN(SELECT)

Manuálne zadanie zoznamu hodnôt niekedy nemusí fungovať. Môžete sa rozhodnúť použiť príkaz SELECT na získanie zoznamu hodnôt z vašej tabuľky a použiť ich na kontrolu s cieľovou hodnotou. Pridaním nasledujúcej tabuľky do našej databázy ju môžeme skombinovať s predchádzajúcou tabuľkou „zákazníkov“ a vytvoriť náš poddotaz:

Povedzme, že chceme zobraziť záznamy z tabuľky „objednávky“ iba vtedy, ak je cieľová hodnota (id_objednávky) v tabuľke „zákazníci“. Tu je stĺpec „customers.order_id“ náš zoznam hodnôt a jeho hodnoty porovnávame s hodnotami v stĺpci „orders.order_id“.

V tomto prípade vyhovujú vyhľadávaniu iba tri záznamy a to je to, čo dostaneme ako výstup pre našu klauzulu IN(SELECT) PostgreSQL.

3. Práca s klauzulou NOT IN PostgreSQL

Pomocou predchádzajúceho príkazu si môžeme zvoliť zobrazenie ostatných hodnôt, ktoré sa nezhodujú s cieľovou hodnotou. Robíme preto opak toho, čo robí klauzula IN. Preto negujeme príkaz NIE JE IN.

Takto napíšeme náš nový príkaz:

Všimnite si, že dostaneme iný výstup ako tie, ktoré sme dostali v príklade 2. Je to preto, že pracujeme s klauzulou NOT IN namiesto klauzuly IN.

V ideálnom prípade môžete pridať NOT vždy, keď chcete negovať výsledky, ktoré získate pomocou klauzuly PostgreSQL IN. Aplikácií je neúrekom. Ak chcete skontrolovať hodnoty a rýchlo ich zhodovať, klauzula IN je váš najlepší priateľ.

Záver

Klauzula IN pracuje s klauzulou WHERE na kontrolu cieľovej hodnoty oproti zoznamu hodnôt. Klauzula IN vracia boolovskú hodnotu, ktorá potvrdzuje, či sa cieľová hodnota zhoduje v zozname hodnôt, ktorý ste zadali. Hodnoty môžete zadať ako literály alebo môžete použiť príkaz SELECT na vytvorenie poddotazu. Uviedli sme tri príklady, ako môžete použiť klauzulu PostgreSQL IN. Dúfajme, že vám to poskytlo prehľad o tom, ako pracovať s klauzulou PostgreSQL IN.