mysql将多行数据合并为一行

例如有如下数据

userdate
a20200119
b20200119
c20200119
d20200120
e20200120
f20200120
g20200120

怎么将相同日期的用户合并为一个字段展示到一起呢

期望效果

usersdate
a,b,c20200119
d,e,f,g20200120

可以使用mysql中的group_concat函数,它返回一个串联的字符串。

语法

GROUP_CONCAT([DISTINCT] expr [,expr ...]
             [ORDER BY {unsigned_integer | col_name | expr}
                 [ASC | DESC] [,col_name ...]]
             [SEPARATOR str_val])

GROUP_CONCAT(expr) 函数会从 expr 中连接所有非 NULL 的字符串。如果没有非 NULL 的字符串,那么它就会返回 NULL

SELECT
    date,
    GROUP_CONCAT(user)
FROM
    user_date
WHERE
    date BETWEEN 20191219
AND 20200120
GROUP BY
    date
ORDER BY
    date DESC

要消除重复的值,可以使用DISTINCT。使用GROUP_CONCAT时,它默认的字符串连接符是逗号,,如果要明确指定分隔符,可以使用SEPARATOR,在SEPARATOR后声明连接字符串即可。如果要对连接字符串排序,还可以指定ORDER BY

SELECT
    date,
    GROUP_CONCAT(DISTINCT user ORDER BY user DESC SEPARATOR ';')
FROM
    user_date
WHERE
    date BETWEEN 20191219
AND 20200120
GROUP BY
    date
ORDER BY
    date DESC
如果您觉得本文对您有用,欢迎捐赠或留言~
微信支付
支付宝

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注