データの検索(相関副問い合わせ)
副問い合わせによる存在検索
相関副問い合わせとは、副問い合わせ中で主問い合わせの内容を関連付けて検索することを指します。
副問い合わせのWHERE句に指定したキーと一致するデータが、一つでも存在した場合抽出対象となります。
これにはEXISTSを使用します。
SELECT 列1, 列2 ・・・ FROM テーブル1
WHERE EXISTS (SELECT 列1 FROM テーブル2 WHERE 相関条件1);
それではサンプルを見てみましょう。
以下のようなsaleテーブル(上)、teamテーブル(下)があります。
| sale_day | item_cd | emp_cd |
|---|---|---|
| 20191104 | 001 | A00001 |
| 20191104 | 002 | A00003 |
| 20191105 | 003 | A00003 |
| 20191106 | 003 | A00004 |
| emp_cd | name |
|---|---|
| A00001 | 荒木 太郎 |
| A00002 | 井端 次郎 |
| A00003 | 森野 三郎 |
| A00004 | 和田 四郎 |
saleテーブルに存在するteamテーブルのデータを抽出するSQLです。
|
1 2 3 4 |
SELECT * FROM team WHERE EXISTS (SELECT * FROM sale WHERE sale.emp_cd = team.emp_cd); |
上記を実行し、抽出された結果がこちらです。
| emp_cd | name |
|---|---|
| A00001 | 荒木 太郎 |
| A00003 | 森野 三郎 |
| A00004 | 和田 四郎 |
saleテーブルに存在するteamテーブルのデータが抽出されました。
なお、EXISTS句の否定形は「NOT EXISTS」になります。
以上が、相関副問い合わせ「EXISTS」の使い方です。
ぜひ参考にしてみてください。