首页 > 数据库技术 > 详细

Oracle用一个表的列更新另一个表对应记录的列,一不小心有字段就更新为空了

时间:2014-04-16 14:42:23      阅读:534      评论:0      收藏:0      [点我收藏+]

刚开始我在网上搜索的用的下面这种方法:

    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用一个表的列更新另一个表对应记录的列,一不小心有字段就更新为空了,布布扣,bubuko.com

Oracle用一个表的列更新另一个表对应记录的列,一不小心有字段就更新为空了

原文:http://blog.csdn.net/lemonran/article/details/23744315

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!