相关子查询

SQL支持在查询语句中编写查询,或者嵌套其他查询。最外层查询的结果集会返回给调用者,称为外部查询。内部查询的结果是供外部查询使用的,也称为子查询。子查询分为独立子查询和相关子查询两类。独立子查询不依赖他所属的外部查询,较为简单,而相关子查询则须依赖于他所属的外部查询,较难理解。
相关子查询是指引用了外部查询中出现的列的子查询,这就意味着子查询要依赖外部查询,不能独立的调用他。子查询会为每个外部行单独计算一次。以下举例说明:

现有订单表Orders(order_id, order_date, customer_id),查询每个客户所有订单中订单ID最大的那个订单。有SQL如下:

select customer_id, order_id, order_date from Orders as t1 
where order_id = (select max(t2.order_id) from Orders as t2 where
t2.customer_id = t1.customer_id) 

根据一条SQL语句的执行顺序,我们知道where是在from后面执行的,经过from阶段的到的结果集是表Orders的全部内容,然后执行where语句,此时子查询会为from阶段的结果集中的每一行都计算一次,计算结果满足order_id = result.order_id则通过,否则被过滤掉。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值