検索

[Oracle] データ検索 相関副問い合わせSQL(EXISTS)

データの検索(相関副問い合わせ)

副問い合わせによる存在検索

相関副問い合わせとは、副問い合わせ中で主問い合わせの内容を関連付けて検索することを指します。
副問い合わせの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です。

上記を実行し、抽出された結果がこちらです。

emp_cd name
A00001 荒木 太郎
A00003 森野 三郎
A00004 和田 四郎

saleテーブルに存在するteamテーブルのデータが抽出されました。
 
なお、EXISTS句の否定形は「NOT EXISTS」になります。
 
 
以上が、相関副問い合わせ「EXISTS」の使い方です。
ぜひ参考にしてみてください。