子查询更新Update字段值

在进行数据修复时,遇到一个问题一直没有怎么注意的问题。

 update wf_task wf
   set ETime =
   (select NewEtime
      from wf_task_Mod_backup_20171016 a
     where wf.Entgid = a.EntGid
       and wf.Flowgid = a.FlowGid  
       and wf.taskGid = a.taskGid
       and wf.execcode = a.execcode 
       and wf.code = a.code 
       and wf.btime = a.btime) 

以上执行的结果会让匹配的数据更新为目标数据,但是不匹配的都会被更新为null

 update wf_task wf
   set ETime =
   (select NewEtime
      from wf_task_Mod_backup_20171016 a
     where wf.Entgid = a.EntGid
       and wf.Flowgid = a.FlowGid  
       and wf.taskGid = a.taskGid
       and wf.execcode = a.execcode 
       and wf.code = a.code 
       and wf.btime = a.btime) 
where exists (select 1
      from wf_task_Mod_backup_20171016
     where Entgid = wf.Entgid
       and FlowGid = wf.flowgid
       and TaskGid = wf.Taskgid);

所以要在后面加上exists,限制数据更新的范围。切忌update 表 set = (字段)后面没有接where 条件。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,930评论 18 399
  • 原文:https://my.oschina.net/liuyuantao/blog/751438 查询集API 参...
    阳光小镇少爷阅读 9,235评论 0 8
  • SQL语言基础 本章,我们将会重点探讨SQL语言基础,学习用SQL进行数据库的基本数据查询操作。另外请注意本章的S...
    厲铆兄阅读 10,701评论 2 46
  • 那年三八线刻在木桌上彼此不过界长大后却想念 那年好好的单车在那里放学后却没了气你远远地看偷偷地笑真不让人待见谁知有...
    一生如燕阅读 1,488评论 0 0
  • 今天是西方的感恩节。现在中国人也开始过了。但是大家可曾知道中国也有感恩节呢?今天我就给大家再次讲讲一段历史吧! 中...
    医心小作阅读 3,828评论 6 13