Oracle の EXISTS と NOT EXISTS の使い方を詳しく解説

Oracleでは、EXISTSおよびNOT EXISTSを、サブクエリで1行でも返されているかどうかを確認するために利用する条件演算子である。

  1. EXISTS: サブクエリが1行以上返したとき、EXISTS条件はTRUEを返します。サブクエリが一行も返さなかった場合、FALSEを返します。
  2. NOT EXISTS:NOT EXISTS条件は、サブクエリが0件の結果を返した場合は真を返し、それ以外の場合は偽を返します。

この2つの演算子は主クエリ内でサブクエリを使って2つのテーブル間の関係を調べる関連サブクエリの使用と関連付けられています。

以下にはそれらのオペレーター kullanımのいくつかの例を記載します。

  1. EXISTSとサブクエリを使用して、1つ以上の匹配行があるかどうかを確認します。
SELECT *
FROM employees
WHERE EXISTS (SELECT 1 FROM departments WHERE departments.department_id = employees.department_id);
  1. NOT EXISTSとサブクエリを使用して一致する行がないことを確認する:
SELECT *
FROM employees
WHERE NOT EXISTS (SELECT 1 FROM departments WHERE departments.department_id = employees.department_id);
  1. EXISTSとサブクエリを利用して、1 つ以上の一致行があるかどうかを判定し、他の条件と組み合わせて使用します。
SELECT *
FROM employees
WHERE employee_id > 100
AND EXISTS (SELECT 1 FROM departments WHERE departments.department_id = employees.department_id);
  1. NOT EXISTSとサブクエリを使用して、一致する行がないかどうかを調べ、他の条件と一緒に使用します。
SELECT *
FROM employees
WHERE employee_id > 100
AND NOT EXISTS (SELECT 1 FROM departments WHERE departments.department_id = employees.department_id);

なお、子クエリには、集計関数や複数テーブルなどを含む、有効な任意のSELECT文を指定できます。これらの条件演算子を使用する際には、子クエリが予測した結果セットを返し、一致する行の有無を正しく判断できるようにしてください。

广告
広告は10秒後に閉じます。
bannerAds