例如有如下数据
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
如果觉得我的文章对您有用,请您随意打赏。您的支持将鼓励我更加努力创作!
如无特殊声明,文章均为原创,若有不正之处,万望告知。转载请附上原文地址,十分感谢!