前言:周末加班身心倦,枯心无意博客编,昨天誓言日一篇,今朝抽空把坑填
正文:OK,废话不多说,先让博主讲一哈业务场景
我将可爱美丽的产品经理提出的需求,概括之为同数据库中把一张A表中数据复用到另一张B表,并根据C表的某些字段来确定B表的某些字段值
实际上,这个功能有多种实现方式,比较容易想到的是第一步批量复用,第二步获得B表全集并左连接C表来批量更新B的某些字段值,通过两次批量操作效率的确是比单条操作效率要高出几何倍。但是,效率更高的当然还是一条SQL就可以完成复用+确定字段值的方式。
批量复用SQL,这个相信大家都知道
insert into B表( B1,B2,B3) select B1,B2,B3 from A表
一条SQL完成复用+确定字段值
insert into B(B1,B2,B3,B4,B5,B6) select t1.B1 as B1, t1.B2 as B2, t1.B3 as B3, t1.B4 as B4, (case when t2.XX2 = 0 then '0' when t2.XX2 = 1 then '1' else '1' end) as B5, (case when t2.XX3 = t1.XX3 then '0' when t2.XX3 != t1.XX3 then '1' else '0' end) as B6 from A t1 LEFT JOIN B t2 on t2.XX1 = t1.XX1