美文网首页
子查询更新Update字段值

子查询更新Update字段值

作者: CJDUDU | 来源:发表于2017-10-16 10:46 被阅读0次

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

     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 条件。

    相关文章

      网友评论

          本文标题:子查询更新Update字段值

          本文链接:https://www.haomeiwen.com/subject/ctqkuxtx.html