程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> Oracle用一個表的列更新另一個表對應記錄的列,一不小心有字段就更新為空了

Oracle用一個表的列更新另一個表對應記錄的列,一不小心有字段就更新為空了

編輯:Oracle教程

剛開始我在網上搜索的用的下面這種方法:

update tbl1 a

  set (a.col1, a.col2) = (select b.col1, b.col2

  from tbl2 b

  where a.key = b.key)

然後,使用後把我坑慘了。我直接在服務器上做的操作,做完後,居然登錄不上系統了。後來才發現,有一個字段的值因為這個語句更新為空了,而登錄時是用了視圖的。這個字段正好是視圖連接表時要用到的。好多用戶反應也登錄不上了,真是悲慘啊!

後來百度才知道原來是這個原因,如果 tbl1.key 的值在 tbl2.key 中沒有此值時,這個更新的兩個字段 tbl1.col1 和 tbl1.col2 字段會被更新為空值(null)。

速度借鑒大神的寫法:

update tbl1 a

  set (a.col1, a.col2) = (select b.col1, b.col2

  from tbl2 b

  where a.key = b.key)

  where a.key in(select key from tbl2)//這一句是相當的關鍵啊。

特別感謝:http://www.codesky.net/article/201004/167714.html這位大神!

記錄下這個問題,供以後參考,也供大家使用。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved