IN 子查询
随同 IN 子查询,可返回多个满足 IN 或 NOT IN 条件的行,但仅可返回一列。
此示例展示在 SELECT 语句中 NOT IN 子查询的使用:
SELECT DISTINCT customer_num FROM orders
WHERE order_num NOT IN
(SELECT order_num FROM items
WHERE stock_num = 1);
要获取附加的信息,请参阅 IN 条件。
EXISTS 子查询
从 EXISTS 子查询,可返回那些在一个或多个列中的满足 EXISTS 条件的行。(类似地,NOT
EXISTS 子查询可返回在一列或多列中满足 NOT EXISTS 条件的那些行。)
下列带有 NOT EXISTS 子查询的 SELECT 语句返回那些从未被订购的每项的库存编号和生产商
代码(因而未罗列在 items 表中)。
在此 SELECT 语句中使用 NOT 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 *,则前一示例同样奏效,因为您正在测试一行或
多行是否存在。
要获取附加的信息,请参阅 EXISTS 子查询条件