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