MySQL字符串拼接concat()分组拼接字符串group_concat()
Posted 哒不溜-w
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL字符串拼接concat()分组拼接字符串group_concat()相关的知识,希望对你有一定的参考价值。
mysql拼接
一、经典拼接concat(x,x,....)
用法案例:
SELECT
concat( '字符串', '拼接', ',啥都可以', '嘿嘿' ) AS concats
FROM DUAL
注意:
- 如果有任何一个参数为NULL,则返回值为NULL;
二、分隔符拼接CONCAT_WS(separator,str1,str2,...)
-- CONCAT_WS(分隔符,字符串1,字符串2,...)
SELECT
CONCAT_WS(':','现在时间',now()) AS concats
FROM DUAL
注意:
- 如果分隔符为NULL,则结果为NULL;
三、分组拼接GROUP_CONCAT(expr)
- group_concat函数
- 实现分组查询之后的数据进行合并,并返回一个字符串结果。
- 用于将多个字符串拼接成一个字符串。
- MySql默认的最大拼接长度为1024个字节
格式:
GROUP_CONCAT(DISTINCT 要拼接的字段 ORDER BY 排序字段 ASC/DESC SEPARATOR '分隔符')
-- GROUP_CONCAT(DISTINCT 要拼接的字段 ORDER BY 排序字段 ASC/DESC SEPARATOR '分隔符')
-- 不好写例子,直接借用的leetCode上的题
SELECT
sell_date,
count( DISTINCT product ) AS num_sold,
GROUP_CONCAT( DISTINCT product ORDER BY product SEPARATOR ',' ) AS products
FROM
Activities
GROUP BY
sell_date;
- 通过使用
DISTINCT
可以排除重复值; - 如果希望对结果中的值进行排序,可以使用
ORDER BY
子句; SEPARATOR
是一个字符串值,默认为逗号
分隔。
MySQL 对分组后的同类数据进行拼接字符串
MySQL 对分组后的同类数据进行拼接字符串
写后台方法时遇到个问题,需要将表内同一订单号的操作记录流水进行简单拼接输出,不想取出来再操作,找了个mysql的方法直接操作
group_concat对组内的每一行数据拼接,内部可以排序、使用separator 进行分割
concat_ws对一行内的各个字段进行拼接,第一项指定分隔符,后续的有null会忽略
select oid, group_concat(concat_ws(‘|‘,atime,(select `level` from prizes where id=win_prize ),win_name) order by atime desc separator ‘ ‘ ) flowrecord from order_logs group by oid;
以上是关于MySQL字符串拼接concat()分组拼接字符串group_concat()的主要内容,如果未能解决你的问题,请参考以下文章
3.1.4MySQL__数据库分组,拼接查询,日期函数,日期加减,间隔,数值四舍五入,排序,分组,having筛选,分组TopN,流程控制函数,
MySql字符串拼接函数(CONCAT,GROUP_CONCAT)