mysql将多行数据合并为一行
例如有如下数据
user | date |
---|---|
a | 20200119 |
b | 20200119 |
c | 20200119 |
d | 20200120 |
e | 20200120 |
f | 20200120 |
g | 20200120 |
怎么将相同日期的用户合并为一个字段展示到一起呢
期望效果
users | date |
---|---|
a,b,c | 20200119 |
d,e,f,g | 20200120 |
可以使用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
如果您觉得本文对您有用,欢迎捐赠或留言~
- 本博客所有文章除特别声明外,均可转载和分享,转载请注明出处!
- 本文地址:https://www.leevii.com/?p=2569