zoukankan      html  css  js  c++  java
  • not exists优化 mysql数据存在不插入

    记一次sql优化

    原代码

    INSERT INTO DataAnalysis_HrmDataHistory
                                  (estate,lockstate,delestate,creator,created,modifier,modified,name,employeeCode,sex,department_id,place_id,onDutyTime,outDutyTime,isDimission,birthday) 
                                  SELECT estate,lockstate,delestate,creator,created,modifier,modified,chineseName,employeeCode,sex,department_id,subCompany,onDutyTime,outDutyTime,isDimission,birthday 
                                  FROM
                                 (
                                    SELECT * FROM Hrm_HrmData 
                                    WHERE (isDimission = 79 AND onDutyTime < date_add('2020-01-01', interval 1 MONTH))       #date_add('2020-01-01', interval 1 MONTH) = '2020-02-01' 往后推一个月 
                                    OR (isDimission = 80 AND outDutyTime >= date_add('2020-01-01', interval 1 MONTH))
                                 ) h  
                                   WHERE  NOT EXISTS  
                                (
                                    SELECT * FROM DataAnalysis_HrmDataHistory WHERE DataAnalysis_HrmDataHistory.employeeCode = h.employeeCode
                                )
    INSERT INTO DataAnalysis_HrmDataHistory
                                  (estate,lockstate,delestate,creator,created,modifier,modified,name,employeeCode,sex,department_id,place_id,onDutyTime,outDutyTime,isDimission,birthday) 
                                  SELECT estate,lockstate,delestate,creator,created,modifier,modified,chineseName,employeeCode,sex,department_id,subCompany,onDutyTime,outDutyTime,isDimission,birthday 
                                  FROM
                                 (
                                    SELECT * FROM Hrm_HrmData 
                                    WHERE (isDimission = 79 AND onDutyTime < date_add('2020-01-01', interval 1 MONTH)) 
                                    OR (isDimission = 80 AND outDutyTime >= date_add('2020-01-01', interval 1 MONTH))
                                 ) h  
                                   WHERE h.employeeCode not in                               #找一个唯一的东西 然后判断存在与否
                                (
                                    SELECT employeeCode FROM DataAnalysis_HrmDataHistory
                                )
  • 相关阅读:
    ABP框架理论研究总结(典藏版)
    ABP系列文章总目录:
    使用NServiceBus开发分布式应用
    shell脚本进阶 详解及其实例(一)
    linux模拟实现主机跨路由通信
    网络管理之基础知识详解
    RAID RAID 大揭秘~
    磁盘管理(一)磁盘结构
    如何在centos7上安装源码包
    压缩与解压缩
  • 原文地址:https://www.cnblogs.com/zxs117/p/12614156.html
Copyright © 2011-2022 走看看