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子句“看到”別名之前,就已經生成了查詢結果。
作者:屠魔的少年終究成魔
來源鏈接:https://www.cnblogs.com/l10n/p/12704575.html
未經允許不得轉載:>貴州網站建設公司 » 1.6 在WHERE子句中引用取別名的列