Selles õpetuses uurime klauslit WHERE IN, et teada saada, kuidas saame seda kasutada antud tabelist või tulemuste komplektist tulemuste välja filtreerimiseks.
SQL WHERE IN klausel
Järgmine näitab SQL-i klausli WHERE IN põhisüntaksit:
VALI veerg1, veerg2, ...
FROM tabeli_nimi
WHERE veeru_nimi IN (väärtus1, väärtus2, ...);
Alustame põhilausega „select”, millele järgneb veerud, mida soovime tulemuskomplekti kaasata.
Järgmisena määrame tabeli, millest tahame tulemusi hankida. Lõpuks määrame filtri tingimuse, kasutades WHERE-klauslit, millele järgneb selle veeru nimi, mille järgi soovime filtreerida. Pärast IN-klauslit määrame väärtuste loendi, mida tahame filtreerimiseks kasutada.
Näide 1: filtreerige üks tulemus
Et paremini demonstreerida, kuidas WHERE IN-i klauslit kasutada, vaatame näidet. Vaatleme Sakila näidisandmebaasist pärit “filmi” tabelit.
Oletame, et tahame hankida kõik filmid reitinguga PG või PG-13. Saame kasutada WHERE IN klauslit järgmiselt:
SELECT pealkiri, väljalaskeaasta, reitingfilmist
WHERE reiting IN (PG);
Sel juhul anname loendi ühest väärtusest, mida soovime IN-klauslis hankida.
Näide 2: Filtreerige mitu väärtust
Samuti saame väärtuste loendis määrata rohkem kui ühe üksuse. Näiteks filmide hankimiseks loendiga, mille reiting on PG ja PG-13, saame päringu käivitada järgmiselt:
SELECT pealkiri, väljalaskeaasta, reitingfilmist
WHERE reiting IN ('PG', 'PG-13');
Saadud väljund on järgmine:
Näide 3: Filtreerige alampäringuga
Samuti saame alampäringus kasutada WHERE IN, mis võimaldab meil tulemusi antud tulemuste komplektist välja filtreerida.
Oletame, et tahame filme keele alusel filtreerida. Näiteks inglis- ja jaapanikeelsete filmide toomiseks saame kasutada alampäringus WHERE IN järgmiselt:
SELECT pealkiri, väljalaskeaasta, reitingFilmist f
WHERE keele_id IN (
SELECT language_id
keelest
WHERE nimi IN ('inglise', 'jaapani')
);
Selles näites loome alampäringu, mis hangib tabelist 'languages' inglise ja jaapani keele väärtused 'language_id'. Põhipäringus valime filmid saadud “language_id” väärtuste alusel.
Järeldus
Selles postituses õppisime, kuidas töötada SQL-i klausliga WHERE IN, et filtreerida välja tulemused, mis vastavad antud loendi ühele või mitmele väärtusele.