業(yè)務(wù)場(chǎng)景描述
老板:把現(xiàn)在生產(chǎn)上的用戶的實(shí)名信息咕娄,改成跟這份excel表里面的實(shí)名信息一樣坠敷。
小龍(程序猿)一看拘鞋,這個(gè)簡(jiǎn)單砚蓬,excel表里就8條數(shù)據(jù),也就是說需要更新的用戶只有8個(gè)盆色,立馬寫了8條update語句灰蛙。
sql如下:
update tbl_realname_info set realname='張三',idcard='74384371327383843122',bankcard='13243223534544623',mobile='13488728893'
where customer_no='200104986122';
..........省略其他的7條update語句祟剔。
第二天,老板提出了同樣的需求摩梧,但是物延,這次給過來的excel表里的數(shù)據(jù)量卻比上次大太多,有幾千個(gè)用戶的實(shí)名信息需要進(jìn)行修改障本。小龍陷入了沉思教届,心想:幾千條update語句,要寫到幾時(shí)才能寫完呀<菟案训!
解決辦法
步驟1:創(chuàng)建臨時(shí)表(temp_realname)
CREATE TABLE `temp_realname` (
`customer_no` varchar(50) DEFAULT NULL COMMENT '用戶編碼',
`realname` varchar(50) DEFAULT NULL COMMENT '真實(shí)名字',
`idcard` varchar(100) DEFAULT NULL COMMENT '身份證號(hào)',
`bankcard` varchar(100) DEFAULT NULL COMMENT '銀行卡號(hào)',
`mobile` varchar(50) DEFAULT NULL COMMENT '手機(jī)號(hào)'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='更改實(shí)名信息臨時(shí)表';
步驟2:修改excel列明,與臨時(shí)表字段保持一致粪糙。
步驟3:將修改后的excel表數(shù)據(jù)導(dǎo)入到臨時(shí)表里面(輔助工具:Navicat)
步驟4:寫update與select結(jié)合使用的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:執(zhí)行上面的sql
總結(jié):這里的關(guān)鍵點(diǎn)在于
1.創(chuàng)建臨時(shí)表
2.update和select結(jié)合使用
update結(jié)合select還有很多靈活運(yùn)用强霎,可以自行上網(wǎng)搜索學(xué)習(xí)。這里只是舉了一個(gè)小小的案例蓉冈,這個(gè)案例也是程序員們經(jīng)常會(huì)遇到的城舞,希望對(duì)您有所幫助