mysql执行顺序如下:

1. from 阶段

2. where 阶段

3. group by 阶段

4. having 阶段

5. select 阶段

6. order by 阶段

7. limit 阶段

 

问题: 为什么别名不可以使用在where中,但可以使用在order by中?

根据mysql的执行顺序,可以知道,上述代码先执行了from score ,再执行了where , 最后执行了select  。 别名产生在第五个查询阶段,别名有了之后,后面的执行阶段才能使用,也就是说,别名只能是第五阶段之后的查询才能使用。因此where total >= 200执行时,还未产生别名total,因此编译出错。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐