mysql不允许使用列的别名作为查询条件

  • Jesse
  • 2017-03-02 16:24:00
  • 445

例如:

select col+1 as a from table where a>100;

这样的sql在执行时会报错。

 

列表别名可以在 GROUP BY, ORDER BY, HAVING中被引用,而标准的SQL禁止在where中被引用,因为where语句执行在先。

所以可以用子查询的方式代替

 

mysqlsql语句执行顺序:

1. from
2. on
3. join
4. where
5. group by
6. with
7. having
8. select
9. distinct
10. order by
11. limit

一条SQL会经过这11步的,中间的每一步都会生成一张虚拟表,后面的步骤都是在上一张虚拟表中进行筛选与查询的

更详细可以参考:sql查询顺序

本文出自 亮有一技,转载时请注明出处及相应链接。