新聞中心
在數(shù)據(jù)庫操作中,我們經(jīng)常使用Update語句對表進(jìn)行修改、更新等。但是不同的數(shù)據(jù)庫在對Update語句的處理過程可能也是不同的。本文我們主要介紹一下Oracle和SQL Server在處理Update語句時的不同,接下來就讓我們來一起學(xué)習(xí)一下吧。

創(chuàng)新互聯(lián)是專業(yè)的合浦網(wǎng)站建設(shè)公司,合浦接單;提供網(wǎng)站設(shè)計制作、成都網(wǎng)站設(shè)計,網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行合浦網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊,希望更多企業(yè)前來合作!
Oracle和SQL Server對Update語句的處理是不同的。同樣的寫法執(zhí)行出來的結(jié)果會不一樣,如果你使用慣了Oracle的話,你需要注意下。在復(fù)雜的Update語句中,Oracle一般用子查詢來實現(xiàn)。比如:
- update table1 t1
- set c1=(select t2.c1 from table2 t2 where t1.c2=t2.c2)
當(dāng)然,如果單純的將該語句復(fù)制到sqlserver 中運行的話會提示語法錯誤:
行一出現(xiàn)語法錯誤
這個時候你可能會想既然不支持別名的話,直接用表名好了,修改語句為:
- update table1
- set c1=(select t2.c1 from table2 t2 where table1.c2=t2.c2)
這個語句確實在sqlserver中能運行,如果你真的運行了它,你就會悲劇了。因為table1中所有的記錄都被更新過,而且一部分本不需要更的記錄被更新成了null,而不是像oracle中只對符合子查詢的記錄進(jìn)行更新。sqlserver中怎么來對這種情況進(jìn)行更新的呢?答案是update from。
在sqlserver中要正常對這種情況進(jìn)行處理的話,需要將上述sql語句進(jìn)行修改,修改后的sql如下:
- update table1
- set c1=t2.c2
- from table2 t2
- where c2=t2.c1
關(guān)于Oracle與SQL Server對Update語句的處理過程就介紹到這里,希望本次的介紹能夠帶給您一些收獲!
文章題目:淺談Oracle與SQLServer對Update語句的處理
本文地址:http://fisionsoft.com.cn/article/ccidjhj.html


咨詢
建站咨詢
