日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

关于update set from where

發布時間:2025/5/22 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于update set from where 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

下面是這樣一個例子:

兩個表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)

?

(Mysql)語句::?UPDATE?A, B?SET?A1?=?B1,?A2?=?B2,?A3?=?B3 WHERE?A.ID?=?B.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都支持的語法:

UPDATE?A??SET?(A1,?A2,?A3)?=?(SELECT?B1,?B2,?B3?FROM?B?WHERE?A.ID?=?B.ID)

?

MS SQL Server不支持這樣的語法,相對應的寫法為:
UPDATE?A??SET?A1?=?B1,?A2?=?B2,?A3?=?B3??FROM?A?LEFT?JOIN?B?ON?A.ID?=?B.ID

?

?

?

個人感覺MS SQL Server的Update語法功能更為強大。MS SQL SERVER的寫法:
UPDATE?A?SET?A1?=?B1,?A2?=?B2, A3 = B3?FROM?A,?B?WHERE?A.ID?=?B.ID

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

UPDATE?A?SET?(A1,?A2,?A3)?=?(SELECT?B1,?B2,?B3?FROM?B?WHERE?A.ID?=?B.ID)
WHERE?ID?IN?(SELECT?B.ID?FROM?B?WHERE?A.ID?=?B.ID)

?

Mysql的寫法是:

UPDATE?A, B?SET?A1?=?B1,?A2?=?B2,?A3?=?B3 WHERE?A.ID?=?B.ID

轉載于:https://www.cnblogs.com/Jian-Zhang/p/8723061.html

總結

以上是生活随笔為你收集整理的关于update set from where的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。