602SQL-Úplná dokumentace Index  

Predikát IN (SQL)

predikát_IN ::= výraz1 [NOT] IN {( výraz { , výraz }… ) | ( dotazový_výraz )}

Predikát IN říká, zda hodnota výrazu1 je mezi hodnotami uvedených výrazů nebo mezi hodnotami v odpovědi na dotazový výraz (subdotaz).

Odpověď na dotazový výraz musí být skalární (musí obsahovat jediný sloupec). Typ odpovědi na subdotaz a typy všech výrazů musí být porovnatelné s typem výrazu1.


Příklad použití (výčet hodnot):

Vybrat faktury z lichých měsíců:

SELECT *
FROM Faktury
WHERE Month(dat1) IN (1,3,5,7,9,11)

Příklad použití (subdotaz):

Vyberte faktury, které patří firmám z Prahy

SELECT Faktury.cislo,Faktury.firma
FROM Faktury
WHERE firma IN (SELECT cislo
                FROM Firmy
                WHERE mesto LIKE 'Praha%')

Stejný výsledek lze dostat pomocí JOINu

SELECT DISTINCT Faktury.cislo, Faktury.firma
FROM Faktury, Firmy
WHERE Firmy.cislo=Faktury.firma
 AND (Firmy.mesto.='Praha')