Mysql 中,为什么 WHERE 使用别名会报错,而 ORDER BY 不会报错?
我们先对salary * 12 命名一个别名annual_sal
SELECT employee_id,salary,salary * 12 annual_sal FROM employees ORDER BY annual_sal;
这段代码以annual_sal升序输出且正常执行没有报错。说明order by 可以使用别名
我们再看看这个段代码
SELECT employee_id,salary,salary * 12 annual_sal FROM employees WHERE annual_sal > 81600 ORDER BY annual_sal;
这段代码就报错了,报错说明是Unknown column 'annual_sal' in 'where clause'。由此可以得出where语句执行是找不到annual_sal.
要解决这个问题,我们必须知道sql语句执行顺序。
- 先执行from语句用哪个表
- where过滤条件(这时候不知道别名)
- select选择输出字段 (这时候才有别名)
- order by进行排序 (order by 才能使用别名)
总结一下:因为where在sql中执行顺序在select(创建别名)之前,所以找不到别名。文章来源:https://www.toymoban.com/news/detail-414088.html
文章来源地址https://www.toymoban.com/news/detail-414088.html
到了这里,关于Mysql 中,为什么 WHERE 使用别名会报错,而 ORDER BY 不会报错?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!