EXISTS
Synopsis
EXISTS select-statement
引数
select-statement | 一般的に条件式を含む単純なクエリ。 |
概要
EXISTS 述語は指定されたテーブルをテストしますが、主として、テーブル内に 1 つ以上の行が存在するかどうかを調べます。EXISTS に続く SELECT 文は、何を含むかについてチェックされます。その節は多くの場合以下の形式です。
EXISTS (SELECT... FROM... WHERE...)
一般的な文は、以下のようになります。
SELECT name
FROM Table_A
WHERE EXISTS
(SELECT *
FROM Table_B
WHERE Table_B.Number = Table_A.Number)
この例では、サブクエリによって指定された単独あるいは複数の行が存在するかどうかを、述語がテストします。
このテストは、UNION 文ではなく SELECT 文で実行しなければならないことに注意してください。
以下の例のように、NOT EXISTS 節は、テーブル内に行が存在しないことをテストします。
SELECT EmployeeName,Age
FROM Employees
WHERE NOT EXISTS (SELECT * FROM BonusTable
WHERE NOT (BonusTable.Result = 'Positive'
AND Employees.EmployeeNum = BonusTable.EmployeeNum))
述語条件を指定できる場所であればどこでも、EXISTS を使用できます。詳細は、このドキュメントの "述語の概要" ページを参照してください。
該当する場合、システムは、EXISTS または NOT EXISTS サブクエリに集合値サブクエリの最適化 (SVSO) を自動的に適用します。この最適化の詳細、および %NOSVSO キーワードを使用したこの最適化のオーバーライドの詳細は、"FROM 節" のリファレンス・ページで “クエリ最適化オプション” を参照してください。