Klauzula SQL WHERE IN

Klauzula Sql Where In



V SQL môžeme použiť klauzulu WHERE IN na odfiltrovanie výsledkov v danej databáze. Klauzula WHERE IN nám umožňuje vybrať riadky z danej databázy, ktoré zodpovedajú jednej alebo viacerým zadaným hodnotám z daného zoznamu.

V tomto návode preskúmame klauzulu WHERE IN, aby sme zistili, ako ju môžeme použiť na odfiltrovanie výsledkov z danej tabuľky alebo sady výsledkov.

Klauzula SQL WHERE IN

Nasleduje základná syntax klauzuly WHERE IN v SQL:







VYBERTE stĺpec1, stĺpec2, ...
FROM table_name
WHERE názov_stĺpca IN (hodnota1, hodnota2, ...);

Začneme základným príkazom „select“, za ktorým nasledujú stĺpce, ktoré chceme zahrnúť do sady výsledkov.



Ďalej špecifikujeme tabuľku, z ktorej chceme získať výsledky. Nakoniec špecifikujeme podmienku filtrovania pomocou klauzuly WHERE, za ktorou nasleduje názov stĺpca, podľa ktorého chceme filtrovať. Za klauzulou IN zadáme zoznam hodnôt, ktoré chceme použiť na filtrovanie.



Príklad 1: Filtrovanie jedného výsledku

Aby sme lepšie ukázali, ako používať klauzulu WHERE IN, pozrime sa na príklad. Zvážte tabuľku „filmov“ zo vzorovej databázy Sakila.





Predpokladajme, že chceme získať všetky filmy s hodnotením PG alebo PG-13. Klauzulu WHERE IN môžeme použiť takto:

SELECT názov, rok vydania, hodnotenie
Z filmu
WHERE rating IN („PG“);

V tomto prípade poskytujeme zoznam jednej hodnoty, ktorú chceme získať v klauzule IN.



Príklad 2: Filter viacerých hodnôt

V zozname hodnôt môžeme určiť aj viac položiek. Napríklad, ak chcete získať filmy so zoznamom s hodnotením PG a PG-13, môžeme spustiť dotaz takto:

SELECT názov, rok vydania, hodnotenie
Z filmu
WHERE rating IN ('PG', 'PG-13');

Výsledný výstup je nasledovný:

Príklad 3: Filter s poddotazom

Môžeme tiež použiť WHERE IN v poddotaze, čo nám umožní odfiltrovať výsledky z danej množiny výsledkov.

Predpokladajme, že chceme filtrovať filmy podľa jazyka. Napríklad, ak chcete získať filmy v anglickom a japonskom jazyku, môžeme použiť WHERE IN v rámci poddotazu takto:

SELECT názov, rok vydania, hodnotenie
Z filmu f
WHERE language_id IN (
SELECT language_id
Z jazyka
WHERE name IN ('angličtina', 'japončina')
);

V tomto príklade vytvoríme poddotaz, ktorý získa hodnoty „language_id“ pre anglický a japonský jazyk z tabuľky „languages“. V hlavnom dotaze vyberáme filmy na základe výsledných hodnôt „language_id“.

Záver

V tomto príspevku sme sa naučili, ako pracovať s klauzulou WHERE IN v SQL, aby sme odfiltrovali výsledky, ktoré zodpovedajú jednej alebo viacerým hodnotám v danom zozname.