Tässä opetusohjelmassa tutkimme WHERE IN -lausetta selvittääksemme, kuinka voimme käyttää sitä suodattamaan tulokset tietystä taulukosta tai tulosjoukosta.
SQL WHERE IN -lause
Seuraavassa näkyy WHERE IN -lauseen perussyntaksi SQL:ssä:
VALITSE sarake1, sarake2, ...
FROM taulukon_nimi
WHERE sarakkeen_nimi IN (arvo1, arvo2, ...);
Aloitamme perus 'select' -lauseella, jota seuraa sarakkeet, jotka haluamme sisällyttää tulosjoukkoon.
Seuraavaksi määritämme taulukon, josta haluamme noutaa tulokset. Lopuksi määritämme suodatusehdon käyttämällä WHERE-lausetta, jota seuraa sen sarakkeen nimi, johon haluamme suodattaa. IN-lauseen jälkeen määritämme listan arvoista, joita haluamme käyttää suodatuksessa.
Esimerkki 1: Suodata yksittäinen tulos
Jos haluat paremmin havainnollistaa WHERE IN -lauseen käyttöä, katsotaanpa esimerkkiä. Harkitse Sakilan näytetietokannan ”filmi”-taulukkoa.
Oletetaan, että haluamme hakea kaikki elokuvat, joiden luokitus on PG tai PG-13. Voimme käyttää WHERE IN -lausetta seuraavasti:
SELECT otsikko, julkaisuvuosi, luokituselokuvasta
WHERE luokitus IN ('PG');
Tässä tapauksessa tarjoamme luettelon yhdestä arvosta, jonka haluamme hakea IN-lauseessa.
Esimerkki 2: Suodata useita arvoja
Voimme myös määrittää useamman kuin yhden kohteen arvoluettelossa. Esimerkiksi, jos haluat hakea elokuvat luettelosta, jonka luokitus on PG ja PG-13, voimme suorittaa kyselyn seuraavasti:
SELECT otsikko, julkaisuvuosi, luokituselokuvasta
WHERE luokitus IN ('PG', 'PG-13');
Tuloksena oleva tulos on seuraava:
Esimerkki 3: Suodata alikyselyllä
Voimme myös käyttää WHERE IN -kohtaa alikyselyssä, jonka avulla voimme suodattaa tulokset pois tietystä tulosjoukosta.
Oletetaan, että haluamme suodattaa elokuvat kielen perusteella. Esimerkiksi elokuvien hakemiseksi englannin ja japanin kielellä voimme käyttää WHERE IN -kohtaa alikyselyssä seuraavasti:
SELECT otsikko, julkaisuvuosi, luokitusFROM elokuvasta f
WHERE language_id IN (
SELECT language_id
FROM kielestä
WHERE nimi IN ('englanti', 'japani')
);
Tässä esimerkissä luomme alikyselyn, joka hakee 'language_id'-arvot englannin ja japanin kielelle 'languages'-taulukosta. Pääkyselyssä valitsemme elokuvat saatujen “language_id”-arvojen perusteella.
Johtopäätös
Tässä viestissä opimme työskentelemään WHERE IN -lauseen kanssa SQL:ssä suodattamaan pois tulokset, jotka vastaavat yhtä tai useampaa arvoa tietyssä luettelossa.