SQL-92/99 Oracle Db2 SQL Server MySQL PostgreSQL Access

WHERE 式 [ NOT ] IN ( 副問い合せ | 値1[, 値2 ... ] )

INは指定した式の値に副問い合せの結果リスト、または指定した値と一致する値が存在するかを調べるときに使用します。

このとき式の値に一致する値が存在するとき真、一致する値が存在しないとき偽になります。


関連キーワード





SQL実行例の説明(1)

・T1_SAMPLE表からI1_CODEが副問い合せの結果リストと一致するデータを取得します。


・副問い合わせはT2_SAMPLE表からI1_NAME車体部品に一致するI1_CODEのデータを取得します。

・副問い合わせの結果リストを使用して、T1_SAMPLE表からI1_CODEがこの結果リストのいずれかの条件を満たすデータを取得します。


SELECT * FROM T1_SAMPLE
WHERE I1_CODE = IN (
SELECT I1_CODE FROM T2_SAMPLE
WHERE I1_NAME = '車体部品'
);


SQL実行の結果(1-1)

・条件式に一致する副問い合わせの結果リストI1_CODE201, 202の2件となる。(右)


I1_CODEI1_NAMEI1_PRICE
101汎用部品 500
201車体部品2300
202車体部品2400
301特殊部品4500

T2_SAMPLE

SQL Result
I1_CODE
201
202



・副問い合わせの結果リストよりI1_CODE201, 202のいずれかの条件を満たすデータ4件を取得します。(右)


SERIALI1_CODEI_COST
2030011012500
2030022016500
2030033019800
2030042015500
2030052015600
2030062025600

T1_SAMPLE

SQL Result
SERIALI1_CODEI_COST
2030022016500
2030042015500
2030052015600
2030062025600



SQL実行例の説明(2)

・T2_SAMPLE表からI1_NAMEが指定した値汎用部品または特殊部品に一致するデータを取得します。


SELECT * FROM T1_SAMPLE
WHERE I1_CODE = IN ( '汎用部品', '特殊部品' );


SQL実行の結果(2-1)

I1_CODEI1_NAMEI1_PRICE
101汎用部品 500
201車体部品2300
202車体部品2400
301特殊部品4500

T2_SAMPLE

SQL Result
I1_CODEI1_NAMEI1_PRICE
101汎用部品 500
301特殊部品4500