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 子查询