ホーム » SQL レファレンス » 論理演算子 »
EXISTS 演算子 - 結果が存在するか調べる -
WHERE <式> [NOT] EXISTS (<副問い合せ>)
使用例1
注意 !!
・MySQL で EXISTS 演算子を使用する場合には、バージョン4.1以降が必要です。
EXISTS 演算子は、指定した式に副問い合せの結果が存在するかを調べるときに使用します。 このとき、式の値に副問い合せの結果が存在するとき真になります。
SELECT *
FROM T_0203_1
WHERE I1_CODE EXISTS (
SELECT I1_CODE
FROM T_0203_2
WHERE I1_NAME = '車体部品'
)
AND I_COST < 6000;
| SERIAL | I1_CODE | I2_CODE | I_COST |
|---|---|---|---|
| 203001 | 101 | 10 | 2500 |
| 203004 | 201 | 20 | 5500 |
| 203005 | 201 | 20 | 5600 |
| 203006 | 202 | 20 | 5600 |
使用例2
EXISTS 演算子では、NOT 演算子を指定することで、指定した式に副問い合せの結果が存在しないかを調べることができます。 このとき、式の値に副問い合せの結果が存在しないとき真になります。
SELECT *
FROM T_0203_1
WHERE I1_CODE NOT EXISTS (
SELECT I1_CODE
FROM T_0203_2
WHERE I1_NAME = '車体部品'
)
AND I_COST < 6000;
| 問い合せ結果はありません。 |
SELECT *
FROM T_0203_1
WHERE I1_CODE NOT EXISTS (
SELECT I1_CODE
FROM T_0203_2
WHERE I1_NAME = '車両部品'
)
AND I_COST < 6000;
| SERIAL | I1_CODE | I2_CODE | I_COST |
|---|---|---|---|
| 203001 | 101 | 10 | 2500 |
| 203004 | 201 | 20 | 5500 |
| 203005 | 201 | 20 | 5600 |
| 203006 | 202 | 20 | 5600 |
参考表
T_0203_1
| SERIAL | I1_CODE | I2_CODE | I_COST |
|---|---|---|---|
| 203001 | 101 | 10 | 2500 |
| 203002 | 201 | 20 | 6500 |
| 203003 | 301 | 30 | 9800 |
| 203004 | 201 | 20 | 5500 |
| 203005 | 201 | 20 | 5600 |
| 203006 | 202 | 20 | 5600 |
T_0203_2
| I1_CODE | I1_PRICE | I1_NAME |
|---|---|---|
| 101 | 500 | 汎用部品 |
| 201 | 2300 | 車体部品 |
| 202 | 2400 | 車体部品 |
| 301 | 4500 | 専用部品 |