update set from 語句用法

2022-08-13 10:51:12 字數 1491 閱讀 6010

關鍵字: update set from

下面是這樣乙個例子:

兩個表a、b,想使b中的memo字段值等於a表中對應id的name值  

表a:id, name  

1       王  

2       李  

3       張  

表b:id,clientname   

1        

2  

3  

(ms sql server)語句:update   b  set   clientname   =   a.name   from   a,b   where   a.id   =   b.id  

(oralce)語句:update   b  set   (clientname)   =  (select name from a where b.id = a.id)

update set from 語句格式

當where和set都需要關聯乙個表進行查詢時,整個update執行時,就需要對被關聯的表進行兩次掃瞄,顯然效率比較低。

對於這種情況,sybase和sql server的解決辦法是使用update...set...from...where...的語法,實際上就是從源表獲取更新資料。

在 sql 中,表連線(left join、right join、inner join

等)常常用於 select 語句,其實在 sql 語法中,這些連線也是可以用於 update 和 delete 語句的,在這些語句中使用

join 還常常得到事半功倍的效果。

update t_orderform set t_orderform.sellerid =b.l_tuserid

from t_orderform a left join t_productinfo   b on b.l_id=a.productid

用來同步兩個表的資料!

oralce和db2都支援的語法:

updatea  set(a1, a2, a3) =(selectb1, b2, b3 fromb wherea.id =b.id)

ms sql server不支援這樣的語法,相對應的寫法為:

updatea  seta1 =b1, a2 =b2, a3 =b3  froma leftjoinb ona.id =b.id

個人感覺ms sql server的update語法功能更為強大。ms sql server的寫法:

updatea seta1 =b1, a2 =b2, a3 = b3 froma, b wherea.id =b.id

在oracle和db2中的寫法就比較麻煩了,如下:

updatea set(a1, a2, a3) =(selectb1, b2, b3 fromb wherea.id =b.id)

whereid in(selectb.id fromb wherea.id =b.id)

update set from 連線查詢更新

1.首先把這種 update.set.from.join.where.查詢起個名字叫 連線查詢更新 2.有兩種寫法 一種是 好理解的方式 更新查詢表中的資料,即更新時取查詢表的別名。舉例如下 begin tran updatea set a.playername a.playername b.gue...

語句 switch語句

switch語句的特點如下 1 switch x 被選擇的內容 即x 只能是byte,short,int,char這四種型別 2 備選答案並沒有指定的順序,但是執行肯定是從第乙個case開始的,如果其中有匹配的case,執行完,通過該case的break就結束了switch。如果沒有匹配的case,...

Python while語句,for語句

usr bin python coding utf 8 filename whiletest.py num 23running true while running i int raw input input a number if i num print right running false e...