​ 在进行数据库的数据整理的时候,特别是对新老平台、规则替换的时候,会碰到数据合并的问题,我将这次整理过程的数据合并写了这篇博客。

需求

表中存在很多需要合并的内容,如下图

abc

将两列数据保留一条,并且内容合并在一起,需要将内容顺序拼接。

方法

使用left join 连接,将保留的信息,和合并的内容连接;

使用CONCAT(str1,str2,…) 函数,拼接字符串;

使用CHAR_LENGTH(str) 函数,判断内容字符串的长度,便于内容顺序合并。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
-- 3、保存需要合并的内容
create table smcontent22 (
select SM_ID ,destaddr , DATE_FORMAT(sendtime,'%Y-%m-%d') sendtime,SM_CONTENT
from tbl_smresult
where PROTOCOLTYPE=3
and SM_CONTENT not like '【政务外网短信平台】%'
and pktotal>1) ;


-- 4.2 合并两条短信的内容
UPDATE tbl_smresult a
left join smcontent22 b
on a.SM_ID =b.SM_ID
and a.PROTOCOLTYPE='3'
and a.destaddr=b.destaddr
set a.SM_CONTENT= CONCAT(a.SM_CONTENT,b.SM_CONTENT)
where a.SM_ID =b.SM_ID
and a.PROTOCOLTYPE='3'
and a.destaddr=b.destaddr
and DATE_FORMAT(a.sendtime,'%Y-%m-%d')=b.sendtime
and CHAR_LENGTH(b.SM_CONTENT)<67
and a.SM_CONTENT like '【政务外网短信平台】%' ;

最后更新: 2019年11月13日 18:12

原始链接: http://ligangit.com/2019/10/11/mysql之数据合并/

× 请我吃糖~
打赏二维码