美文网首页
mysql建临时表批量更新

mysql建临时表批量更新

作者: Longer_JzL | 来源:发表于2019-12-13 14:39 被阅读0次

    业务场景描述

    老板:把现在生产上的用户的实名信息,改成跟这份excel表里面的实名信息一样。


    image.png

    小龙(程序猿)一看,这个简单,excel表里就8条数据,也就是说需要更新的用户只有8个,立马写了8条update语句。
    sql如下:

    update tbl_realname_info set realname='张三',idcard='74384371327383843122',bankcard='13243223534544623',mobile='13488728893'
     where customer_no='200104986122';
    

    ..........省略其他的7条update语句。

    第二天,老板提出了同样的需求,但是,这次给过来的excel表里的数据量却比上次大太多,有几千个用户的实名信息需要进行修改。小龙陷入了沉思,心想:几千条update语句,要写到几时才能写完呀!!

    解决办法

    步骤1:创建临时表(temp_realname)
    CREATE TABLE `temp_realname` (
      `customer_no` varchar(50) DEFAULT NULL COMMENT '用户编码',
      `realname` varchar(50) DEFAULT NULL COMMENT '真实名字',
      `idcard` varchar(100) DEFAULT NULL COMMENT '身份证号',
      `bankcard` varchar(100) DEFAULT NULL COMMENT '银行卡号',
      `mobile` varchar(50) DEFAULT NULL COMMENT '手机号'
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='更改实名信息临时表';
    
    表结构示意图.png
    步骤2:修改excel列明,与临时表字段保持一致。
    image.png
    步骤3:将修改后的excel表数据导入到临时表里面(辅助工具:Navicat)
    导入操作示意图.png 导入数据后临时表数据示意图.png
    步骤4:写update与select结合使用的sql
    UPDATE tbl_realname_info a
    INNER JOIN (
        SELECT
            t.customer_no,
            t.realname,
            t.idcard,
            t.bankcard,
            t.mobile
        FROM
            temp_realname t
    ) b ON a.customer_no = b.customer_no
    SET a.realname = b.realname,
     a.idcard = b.idcard,
     a.bankcard = b.bankcard,
     a.mobile = b.mobile;
    
    步骤5:执行上面的sql

    总结:这里的关键点在于
    1.创建临时表
    2.update和select结合使用
    update结合select还有很多灵活运用,可以自行上网搜索学习。这里只是举了一个小小的案例,这个案例也是程序员们经常会遇到的,希望对您有所帮助

    相关文章

      网友评论

          本文标题:mysql建临时表批量更新

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