第一篇:SQL語句Where中使用別名作為判斷條件-2014年3月10日1時5分
當我們使用某個表達式作為輸出的一列時,我們無法再Where條件中直接使用該列作判斷條件.例如下面的SQL語句:
select id,(c1 + c2)as s from t1where s > 100
SQL Server 報錯: “列名 s 無效”
當然,寫成select id,(c1 + c2)as s from t1where(c1 + c2)> 100
就沒問題了.可是當表達式復雜時就很繁瑣了.有沒有可以在Where中使用這樣的列名的辦法?
或者有什么其他辦法可以解決這類問題呢?
解決方法:
SQL code復制代碼
select t2.*
from(select id,(c1 + c2)as c from t1)t2
where c > 100
--或者
select t2.*
from(select id, c = c1+c2 from t1)t2
where c > 100
由于在Where語句不能直接使用列別名,因此我們需要將Sql語句給包裝一下
在ORACLE中,在WHERE子句中引用列別名會出錯,這是為什么呢?
因為:SELECT 語句的執行順序
1.from語句
2.where語句(結合條件)
3.start with語句
4.connect by語句
5.where語句
6.group by語句
7.having語句
8.model語句
9.select語句
10.union、minus、intersect等集合演算演算
11.order by語句