當咱們使用某個表達式做爲輸出的一列時,咱們沒法再Where條件中直接使用該列做判斷條件.
例以下面的SQL語句:
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語句this