關鍵字: 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...