ALL、ANY、SOME 子查询
下列示例返回所有包含一项的所有订单的订单编号,该项的总价大于订单编号 1023 中每项的总
价。第一个 SELECT 使用 ALL 子查询,第二个 SELECT 通过使用 MAX 聚集函数产生相同的
结果。
SELECT DISTINCT order_num FROM items
WHERE total_price > ALL (SELECT total_price FROM items
WHERE order_num = 1023);
SELECT DISTINCT order_num FROM items
WHERE total_price > SELECT MAX(total_price) FROM items
WHERE order_num = 1023);
下列 SELECT 语句返回所有包含一项的所有订单的订单编号,该项的总价大于订单编号 1023 中
至少一项的总价。第一个 SELECT 语句使用 ANY 关键字,而第二个 SELECT 语句使用 MIN
聚集函数:
SELECT DISTINCT order_num FROM items
WHERE total_price > ANY (SELECT total_price FROM items
WHERE order_num = 1023);
SELECT DISTINCT order_num FROM items
WHERE total_price > (SELECT MIN(total_price) FROM items
WHERE order_num = 1023);
如果子查询恰好返回一个值,则您可在子查询中省略关键字 ANY、ALL 或 SOME。如果您省略
ANY、ALL 或 SOME,且子查询返回多个值,则您会收到错误。下一示例中的子查询仅返回一
行,因为它使用聚集函数:
SELECT order_num FROM items
WHERE stock_num = 9 AND quantity =
(SELECT MAX(quantity) FROM items WHERE stock_num = 9);
另请参阅 ALL、ANY 和 SOME 子查询。