MySQL将字段的值进行拼接更新
作者:钓赛通
发布时间:2022-11-25
点击数:
应用场景:
1、同张表分组时将某个字段的值进行拼接
-- 将学生按班级分组,对同一班级的学生姓名进行拼接 SELECT classid,group_concat(stu_name) as stu_names FROM student GROUP BY classid
2、不同表将某几个字段的值进行拼接
-- 将客户的负责人表crm_share_join中负责人beshare_uid以cid分组,查询同一客户多个负责人, 查询 new_charege 字段以 (创建人uid,负责人A,负责人B,负责人C...,) 形式展示 SELECT s.cid, s.beshare_uid, s.share_uid, c.creatid, c.id, c.charge_person, CONCAT(c.creatid,',',group_concat(s.beshare_uid),',') as new_charege FROM crm_share_join s, crm_customer c WHERE s.cid = c.id AND s.creat_id <> s.beshare_uid GROUP BY s.cid HAVING new_charege<> c.charge_person
3.拼接几个字段的值,去更新别一个字段。
-- 将用户昵称更新成(昵称+ID) UPDATE `user` SET `nickname` = concat('微信用户(ID:',id,')') WHERE `nickname` = '微信用户'
还有更多的场景使用,以后遇到了在更新到这里。
了解mysql中的concat相关函数
一、concat()函数
功能:将多个字符串连接成一个字符串
语法:concat(str1,str2,…)
其中的字符串既可以是数据表字段,也可以是指定的字符串
返回结果为连接参数产生的字符串,如果有任何一个参数为null,则该条记录的返回值为null
二、concat_ws()函数
功能:和concat()一样,将多个字符串连接成一个字符串,但是可以一次性指定分隔符(concat_ws就是concat with separator)
语法:concat_ws(separator,str1,str2,…)
说明:第一个参数指定分隔符,需要注意的是分隔符不能为null,如果为null,则所有返回结果均为null
三、group_concat()函数
先来看这么个需求:
其中user_id是用户id,fee是消费金额,time是消费时间戳。
在consumption消费记录表中,需要查找出每个用户所有的消费金额明细。
很显然,单一的group by已经不足以实现这个需求了:
group by后的字段之间的关系是错层的,我们只能单一的去筛选某个字段,而不能保证它们同属于一条记录。
这个时候就要用到group_concat()函数了:
得到如下结果:
对结果进行数据处理,可以很容易地在页面上展示我们想要的效果。