1)正常写的顺序:select ... from... where.... group by... having... order by.. limit [offset,]
2)执行顺序:from... where...group by... having.... select ... order by... limit
from 先根据笛卡尔积组织表(里面可能涉及到 on left)
where 然后在选出符合的数据
group by. 对选出符合的数据进行分组
having 筛选符合要求的组
select 在符合的组中显示字段信息
order by 最后对字段信息排序
3)这就很好的解释了为何在select里面as一个新名称到where里面判断会报错的原因了
select rp as newrp from table where newrp>20 这个明显是错的因为where在select前面执行所以就报错找不到newrp这个字段
了。