淺談Oracle與SQL Server對Update語句的處理
在數據庫操作中,我們經常使用Update語句對表進行修改、更新等。但是不同的數據庫在對Update語句的處理過程可能也是不同的。本文我們主要介紹一下Oracle和SQL Server在處理Update語句時的不同,接下來就讓我們來一起學習一下吧。
Oracle和SQL Server對Update語句的處理是不同的。同樣的寫法執行出來的結果會不一樣,如果你使用慣了Oracle的話,你需要注意下。在復雜的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中只對符合子查詢的記錄進行更新。sqlserver中怎么來對這種情況進行更新的呢?答案是update from。
在sqlserver中要正常對這種情況進行處理的話,需要將上述sql語句進行修改,修改后的sql如下:
- update table1
- set c1=t2.c2
- from table2 t2
- where c2=t2.c1
關于Oracle與SQL Server對Update語句的處理過程就介紹到這里,希望本次的介紹能夠帶給您一些收獲!
【編輯推薦】