OracleのEXISTS 相関副問い合わせ【SQL】

OracleのEXISTS(相関副問い合わせ)

Oracleで副問合せに行が存在するかどうかを取得するには「EXISTS」を使います。

今回は「EXISTS」の使い方を紹介します。

WHERE EXISTS(副問い合わせSQL)

副問い合わせSQLがtrueであれば、データが取得できます。

サンプルデータ

empno empname managerno
A001 佐藤花子 A005
A002 田中太郎 A004
A003 加藤一
A004 青木花
A005 藤田学

empno
A001
A005



例1. EXISTSで2テーブルに合致するレコードを取得する

empno empname
A001 佐藤花子
A005 藤田学

ここでは「emp」テーブルと「act_tennis」テーブルをキー「empno」で副問い合わせを使って取得しました。これにより、2テーブルに合致するレコードのみが取得できました。

例2. EXISTSで同一テーブルに合致するレコードを取得する

empno empname
A004 青木花
A005 藤田学

ここでは「emp」テーブル単独で副問い合わせを使い、役職付きの人を取得しました。「empno」と「managerno」が合致する行、つまり、「A004」「A005」が取得できました。

例3. NOT EXISTS

empno empname
A001 佐藤花子
A002 田中太郎
A003 加藤一

「NOT EXISTS」を使って条件に合致しないレコードを取得しました。ここでは役職付きではない人を取得しました。

以上、OracleのEXISTSの使い方でした。