python中and与or的执行顺序-关联子查询的执行顺序是什么

sql的编写顺序

select .. from .. where .. group by ..having .. order by ..

sql的执行顺序

from .. where .. group by .. having .. select .. order by ..

关联子查询 :

在关联子查询中,对于外部查询返回的每一行数据,内部查询都要执行一次。另外,在关联子查询中是信息流是双向的。外部查询的每行数据传递一个值给子查询,然后子查询为每一行数据执行一次并返回它的记录。然后,外部查询根据返回的记录做出决策。

select * from dept d where exists(select * from emp e where e.deptno = d.deptno);

特点

1. 先执行外层查询

2. 再执行内层查询

非关联子查询:

非相关子查询是独立于外部查询的子查询,子查询执行完毕后将值传递给外部查询

select * from emp where sal = (select max(sal) from emp);

特点

1. 先执行内层查询

2. 再执行外层查询

所以你的例子里面,先执行外层的 select 语句的 from,把 Product 表里面每行数据查询出来,查询每一行数据,都要执行一次内层 select 语句,这个时候是完整的执行内层 select 语句,就是内层里面的 from … where … group by … select avg(sale_price),作用是把和外层查询出来的一行数据里面的 type 相同的所有行取出来,算sale_price列的平均值,然后继续执行外层的 where 条件,最后选出需要的列数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值