sql別名何時使用

http://www.newxing.com/Tech/Database/MSSQL/91.html------------------同意

http://hi.baidu.com/hellofrancis/item/1db89f0a2673f1036d904805-----這個說法好像不對


別名的有效性也是遵循sql執行順序的,你不能在執行別名命名語句之前就使用它。


例如下面的SQL語句: 

select id, (c1 + c2) as s
from t1
where s > 100 
  SQL Server 報錯: "列名 s 無效"


當然,寫成 
select id, (c1 + c2) as s
from t1
where (c1 + c2) > 100 

 就沒問題了.


 
  可是當表達式複雜時就很繁瑣了.
 
  有沒有可以在Where中使用這樣的列名的辦法?
  或者有什麼其他辦法可以解決這類問題呢? 

解決方法:


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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章