父查询与子查询之间用比较运算符进行连接,构成带有比较运算符的子查询。只有当用户知道内层子查询返回的是单个值时,才可以用>、<、=、>=、<=、<>等比较运算符连接父查询与子查询。
例如,在例 1.17 中,若顾客张一川只有一个订单,则内层子查询的结果表只有一行(即’信息部’),因此可用等号=代替 IN 谓词。
例 1.18 找出所订物品的金额总计大于平均数的所有订单明细:
select item_num,ship_name,(ship_price*quantity) as total_price
from items
where (ship_price*quantity)>
(
select AVG(ship_price*quantity)
from items
);
查询结果为:
item_num ship_name total_price
10002 商品 HSK $1920.00
10007 商品 HRR $2400.00
本例中的嵌套查询可以这样理解,子查询计算所有订单的平均预定金额,将其值返回给父查询,在父查询中得出满足由子查询所得的值参与计算的 where 语句的元组。因此,子查询的查询条件依赖于父查询,这类子查询被称为相关子查询。