问一下第三个sql语句为什么是先计算了(select count(*) from test)这个,在计算select count(*) from test where Ztype='2',最后在相减,这个执行顺序原理不是很懂(有文档可以参考吗,搜索关键字也不知道怎么找)。请指教。
谢谢
问一下第三个sql语句为什么是先计算了(select count(*) from test)这个,在计算select count(*) from test where Ztype='2',最后在相减,这个执行顺序原理不是很懂(有文档可以参考吗,搜索关键字也不知道怎么找)。请指教。
谢谢
5 回答3.2k 阅读✓ 已解决
3 回答3.6k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
5 回答1.4k 阅读
3 回答1.2k 阅读✓ 已解决
2 回答2k 阅读
3 回答2k 阅读
执行顺序 from -> where -> group by -> select
至于完整的顺序,自己搜下mysql执行顺序。
分析下,
from test,先查找test这个表
where Ztype='2' 开始过滤表
select 开始遍历这个表的每一行
遍历的同时,由于你select中含有(select count(*) from test)这个查询,因此每遍历一行就会去计算一次,只不过你select中含有count聚合函数,最后只显示一行。
很好理解的,mysql怎么去查询数据,当然先要找到表(from),需要过滤的先过滤(where),过滤完当然要遍历给你显示出来(select),只不过你在select的时候,多查了一个不属于本表的字段,mysql就像递归一样,先去把它查出来显示