mysql将多行数据合并为一行

该文章由 leevare 发布于 ,归类于 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

如果觉得我的文章对您有用,请您随意打赏。您的支持将鼓励我更加努力创作!

相关文章:

说点什么

avatar
300
  订阅  
提醒