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_CODEは201, 202の2件となる。(右)
I1_CODE | I1_NAME | I1_PRICE |
---|---|---|
101 | 汎用部品 | 500 |
201 | 車体部品 | 2300 |
202 | 車体部品 | 2400 |
301 | 特殊部品 | 4500 |
T2_SAMPLE
I1_CODE |
---|
201 |
202 |
・副問い合わせの結果リストよりI1_CODEが201, 202のいずれかの条件を満たすデータ4件を取得します。(右)
SERIAL | I1_CODE | I_COST |
---|---|---|
203001 | 101 | 2500 |
203002 | 201 | 6500 |
203003 | 301 | 9800 |
203004 | 201 | 5500 |
203005 | 201 | 5600 |
203006 | 202 | 5600 |
T1_SAMPLE
SERIAL | I1_CODE | I_COST |
---|---|---|
203002 | 201 | 6500 |
203004 | 201 | 5500 |
203005 | 201 | 5600 |
203006 | 202 | 5600 |
SQL実行例の説明(2)
・T2_SAMPLE表からI1_NAMEが指定した値汎用部品または特殊部品に一致するデータを取得します。
SELECT * FROM T1_SAMPLE
WHERE I1_CODE = IN ( '汎用部品', '特殊部品' );
SQL実行の結果(2-1)
I1_CODE | I1_NAME | I1_PRICE |
---|---|---|
101 | 汎用部品 | 500 |
201 | 車体部品 | 2300 |
202 | 車体部品 | 2400 |
301 | 特殊部品 | 4500 |
T2_SAMPLE
I1_CODE | I1_NAME | I1_PRICE |
---|---|---|
101 | 汎用部品 | 500 |
301 | 特殊部品 | 4500 |