mysql建临时表批量更新

业务场景描述

老板:把现在生产上的用户的实名信息,改成跟这份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还有很多灵活运用,可以自行上网搜索学习。这里只是举了一个小小的案例,这个案例也是程序员们经常会遇到的,希望对您有所帮助

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容