检查表中是否至少存在一个对应行。

大纲

EXISTS select-statement

参数

  • select-statement - 一种简单的查询,通常包含一个条件表达式。

描述

EXISTS谓词测试指定的表,通常至少测试一行是否存在。
因为EXISTS后面的SELECT语句正在被检查是否包含某些内容,所以子句通常是这样的形式:

EXISTS (SELECT... FROM... WHERE...)

SELECT name
     FROM Table_A
     WHERE EXISTS
     (SELECT *
          FROM Table_B
          WHERE Table_B.Number = Table_A.Number)

在本例中,谓词测试子查询指定的一行或多行是否存在。

注意,测试必须发生在SELECT语句上(而不是在UNION上)。

NOT EXISTS子句测试表中是否有一行不存在,如下例所示:

SELECT EmployeeName,Age
     FROM Employees
     WHERE NOT EXISTS (SELECT * FROM BonusTable
     WHERE NOT (BonusTable.Result = 'Positive'
     AND Employees.EmployeeNum = BonusTable.EmployeeNum))

EXISTS可以在任何可以指定谓词条件的地方使用,如本手册的谓词概述页面所述。

在适用的情况下,系统自动对存在或不存在的子查询应用集值子查询优化(SVSO)。