码迷,mamicode.com
首页 > 其他好文 > 详细

1.6 在WHERE子句中引用取别名的列

时间:2020-04-15 13:38:01      阅读:73      评论:0      收藏:0      [点我收藏+]

标签:使用   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子句“看到”别名之前,就已经生成了查询结果。

 

1.6 在WHERE子句中引用取别名的列

标签:使用   ssi   mis   err   nbsp   sel   错误   别名   解决   

原文地址:https://www.cnblogs.com/liang545621/p/12704575.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!