mysql 语句执行顺序的问题

1.我用 select a,b from table where b=1 groupby c having d>2 orderby b desc 的一条sql语句

2.我一开始认为会报错的 原因是 我认为mysql的执行顺序是 from where groupby select having orderby
所以having执行之前已经筛选出来数据,数据中是没有d这个字段的所以使用 having d > 2 会报错的因为having之前是没有这个字段的
然而实际上是没有报错的,在这之前我记得我曾经也测试过是报错的不知道怎么回事现在又没有错了 一开始我以为是版本的问题,我现在测试的版本mysql是5.6的

3.我看了mysql的官网的文档 没有看懂,然后又网上找了好多答案 有from where group having select orderby的各种各样,我现在都不知道相信那个了。

4.所以请教一下大神们mysql的sql执行语句的顺序的问题。

阅读 2.4k
2 个回答

...你看的没有错,有个写顺序的文章,但我忘了所以就不妨上来了。一,先 from 确定你需求的字段,二,where 对数据进行筛选,所以在性能提升方面,where 的作用很重要。而这是一个虚拟表就已经生成了,而不存在你说的 having 时还没有 d 这个列。

我觉得是from where select group having orderby理由如下:from where select先查找出数据来 group分组之后 having筛选 然后orderby排序

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