EXISTS 子查询条件

如果子查询返回行,则 EXISTS 子查询条件求值为 TRUE。以 EXISTS 子查询,可返回一个或多个列。该子查询总是包含对主查询中表的列的引用。如果您在不包含 HAVING 子句的 EXISTS 子查询中使用聚集函数,则总会返回至少一行。

EXISTS 子查询
元素 描述 限制 语法
subquery 内嵌的查询 不可包含 FIRST 子句也不可包含 ORDER BY 子句 SELECT 语句
下列带有 EXISTS 子查询的 SELECT 语句的示例返回从未被订购(且因此未罗列在 items 表中)的每个项的存货编号和制造商代码。您可在此 SELECT 语句中适当地使用 EXISTS 子查询,因为您使用子查询来测试 items 中的 stock_num 以及 manu_code
SELECT stock_num, manu_code FROM stock
        WHERE NOT EXISTS (SELECT stock_num, manu_code FROM items
        WHERE stock.stock_num = items.stock_num AND
        stock.manu_code = items.manu_code);

如果您在列名称的位置中的子查询中使用 SELECT *,则前面的示例同样奏效,因为测试整行的存在;不测试特定的列值。