标签:使用 ssi mis err nbsp sel 错误 别名 解决
如下查询,会抛出错误:
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子句“看到”别名之前,就已经生成了查询结果。
标签:使用 ssi mis err nbsp sel 错误 别名 解决
原文地址:https://www.cnblogs.com/liang545621/p/12704575.html