Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

EXISTS

テーブルに対応する行が 1 行以上あるかどうかをチェックします。

Synopsis

引数

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 節" のリファレンス・ページで “クエリ最適化オプション” を参照してください。

関連項目

FeedbackOpens in a new tab