通常の使い方
WHERE a IN(1,2,3)
など
チョット便利な使い方
条件の羅列にテーブルのカラムや関数を指定することが出来ます。
いずれかの列に1が設定されているか判定したい時
WHERE 1 IN(列1,列2,列3)
列1~列5のうち、いずれかの値が等しいカラムが存在するか判定したい時
WHERE 列1 IN(列2,列3,列4,列5)
OR 列2 IN( 列3,列4,列5)
OR 列3 IN( 列4,列5)
OR 列4 IN( 列5)
いずれかの列に0以外の数値(正数)が設定されているか判定したい時
WHERE 1 IN(SGN(列1),SGN(列2),SGN(列3))
※SGN()関数:プラスの数値の時は1を返す(DBMSによってはSIGN)
こんなことも可能
WHERE TRUE IN(a=x,b=y,c=z)
※ACCESSで確認済み
2023.6.13追記
列1~列5のうち、すべてのカラムの値が等しいか判定したい時
WHERE (列1,列1,列1,列1) IN((列2,列3,列4,列5))
--DBMSによっては
--WHERE (列1,列1,列1,列1) = (列2,列3,列4,列5)
どんな時に使うのか
判定条件にANDとORが混在するとき、ORの部分をIN句にすれば、可読性があがります。
BETWEEN句も同様
IN句と同様にテーブルのカラムを指定することが出来ます。
WHERE 50 BETWEEN 列1 AND 列2