设为首页 加入收藏

TOP

Oracle用一个表的列更新另一个表对应记录的列,一不小心有字段就更新为空了
2014-11-23 21:50:09 来源: 作者: 【 】 浏览:17
Tags: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这位大神!

记录下这个问题,供以后参考,也供大家使用。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Oracle数据库案例整理-登录Oracle.. 下一篇OracleDG故障诊断案例一则:ORA-1..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: