日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

关于update set from where

發布時間:2025/5/22 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于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的全部內容,希望文章能夠幫你解決所遇到的問題。

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