【Oracle】【7】大批量update某個字段


正文:

需實現:將A表的某個字段的值復制到B表中

我們一般會這樣寫:UPDATE B SET B.NAME = (SELECT A.NAME FROM A WHERE A.NO = B.NO)

出現的問題是:

1,B表中A.NO = B.NO匹配不上的數據行,NAME字段會被清空;

例:A表{[NO1,NAME_A_1]},B表{[NO1,NAME_B_1], [NO2,NAME_B_2]},執行該語句后,B表數據會變成{[NO1,NAME_A_1], [NO2,null]}

2,效率較低,執行時間很長

解決方案:

1,加限制條件,更新的列只能是匹配得上的

UPDATE B SET B.NAME = (SELECT A.NAME FROM A WHERE A.NO = B.NO) WHERE B.NO IN (SELECT A.NO FROM A)

2,merge into

--注意順序
MERGE IN TO B
USING A
ON (A.NO = B.NO)
WHEN MATCHED THEN
  UPDATE SET B.NAME = A.NAME

參考博客:

1,oracle數據庫大批量update操作記錄 - shenxian1021的專欄 - CSDN博客
https://blog.csdn.net/shenxian1021/article/details/79269042

 

2,Oracle中的 UPDATE FROM 解決方法 - 穿林度水 - 博客園
https://www.cnblogs.com/clds/p/6016639.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM