mysql查询语句执行顺序

图片描述

问一下第三个sql语句为什么是先计算了(select count(*) from test)这个,在计算select count(*) from test where Ztype='2',最后在相减,这个执行顺序原理不是很懂(有文档可以参考吗,搜索关键字也不知道怎么找)。请指教。
谢谢

阅读 4.1k
1 个回答

执行顺序 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就像递归一样,先去把它查出来显示

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题