myql的执行顺序
一条SQL会经过这11步的,中间的每一步都会生成一张虚拟表,后面的步骤都是在上一张虚拟表中进行筛选与查询的
from
on
join
where
group by
with
having
select
distinct
order by
limit
例如:
select col+1 as a from table where a>100;
这样的sql在执行时会报错。
列表别名可以在 GROUP BY, ORDER BY, HAVING中被引用,而标准的SQL禁止在where中被引用,因为where语句执行在先。
所以可以用子查询的方式代替