この記事では、SQLでよく使用されるEXISTS句とNOT EXISTS句について、その違いと使用例を詳しく解説します。
目次
EXISTS句とは
EXISTS句は、サブクエリが一つ以上の行を返すかどうかを判断するSQLの条件です。サブクエリが一つ以上の行を返す場合、EXISTS句は真(TRUE)を返します。
基本的な使用例
SELECT * FROM employees
WHERE EXISTS (
SELECT 1 FROM department
WHERE employees.department_id = department.id
);
表での説明
employeesテーブル | departmentテーブル |
---|---|
ID: 1, Name: 田中 | ID: 1, Name: 人事 |
ID: 2, Name: 鈴木 | ID: 2, Name: 営業 |
この例では、`employees`テーブルの各行について、`department`テーブルで対応する`department_id`が存在するかどうかを判断しています。
NOT EXISTS句とは
NOT EXISTS句は、EXISTS句の逆であり、サブクエリが行を返さない場合に真(TRUE)を返します。
基本的な使用例
SELECT * FROM employees
WHERE NOT EXISTS (
SELECT 1 FROM department
WHERE employees.department_id = department.id
);
表での説明
employeesテーブル | departmentテーブル |
---|---|
ID: 3, Name: 佐藤 | ID: 3, Name: なし |
この例では、`employees`テーブルの各行について、`department`テーブルで対応する`department_id`が存在しないかどうかを判断しています。
EXISTS句とNOT EXISTS句の違い
EXISTS句とNOT EXISTS句の主な違いは、サブクエリの結果に対する評価方法です。EXISTSはサブクエリが1行以上返すと真を返し、NOT EXISTSはサブクエリが0行を返すと真を返します。
EXISTS句 | NOT EXISTS句 |
---|---|
サブクエリが1行以上なら真 | サブクエリが0行なら真 |
まとめ
EXISTS句とNOT EXISTS句はSQLでよく使用される条件の一つですが、その働きは対照的です。EXISTS句はサブクエリが1行以上返す場合に真を返し、NOT EXISTS句はサブクエリが0行を返す場合に真を返します。適切に使い分けることで、SQLのクエリがより効率的になります。
created by Rinker
¥4,554
(2024/11/22 10:55:01時点 Amazon調べ-詳細)
コメント