1.6 在WHERE子句中引用取别名的列
Posted liang545621
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1.6 在WHERE子句中引用取别名的列相关的知识,希望对你有一定的参考价值。
如下查询,会抛出错误:
mysql> select sal as salary, comm as commission from emp where salary < 5000;
ERROR 1054 (42S22): Unknown column ‘salary‘ in ‘where clause‘
解决方案
将查询作为内联视图就可以就可以引用其中别名的列了:
select *
from (
select sal as salary, comm as commission
from emp ) x
where salary < 5000
在这个简单的示例中,可以不使用内联视图,也不用在WHERE子句中直接引用COMM或SAL而得到相同的结果。本方案介绍的方法在下列情形的WHERE子句都可以使用:
聚集函数
标量子查询
视窗函数
别名
将取别名的查询作为内联视图,便可以在外部查询中引用其别名列,为什么要这么做呢?WHERE子句是在SELECT子句之前进行处理的,在处理求解查询“问题”WHERE子句之前,SALARY和COMMISSION并不存在,要到WHERE子句处理完成之后,别名才有效。然而,FROM子句是在WHERE子句之前进行处理的。将原始查询放在FROM之句之中,那么,在最外层的WHERE子句之前,以及最外层的WHERE子句“看到”别名之前,就已经生成了查询结果。
以上是关于1.6 在WHERE子句中引用取别名的列的主要内容,如果未能解决你的问题,请参考以下文章