Oracle與SQL Server對Update語句的處理

1.在複雜的Update語句中,Oracle一般用子查詢來實現。比如:

update table1 t1   set c1=(select t2.c1 from table2 t2 where t1.c2=t2.c2) 


[擴展]

當然,如果單純的將該語句複製到sqlserver 中運行的話會提示語法錯誤:行一出現語法錯誤.

這個時候你可能會想既然不支持別名的話,直接用表名好了,修改語句爲:

update table1    set c1=(select t2.c1 from table2 t2 where table1.c2=t2.c2) 這個語句確實在sqlserver中能運行,如果你真的運行了它,你就會悲劇了。因爲table1中所有的記錄都被更新過,而且一部分本不需要更的記錄被更新成了null,而不是像oracle中只對符合子查詢的記錄進行更新。


2. sqlserver中怎麼來對這種情況進行更新的呢?答案是update from。

在sqlserver中要正常對這種情況進行處理的話,需要將上述sql語句進行修改,修改後的sql如下:

update table1   set c1=t2.c2   from table2 t2   where c2=t2.c1 

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