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,因此编译出错。