Sha*_*yar 3 mysql sql group-by group-concat
数据:
id uid type
1 20 A
2 20 B
3 20 A
4 6 A
5 1 A
6 3 A
7 6 A
8 1 B
Run Code Online (Sandbox Code Playgroud)
场景:
我想分组type并按排序id。我正在使用分组依据对分组uid。
当前查询:
SELECT
type,
GROUP_CONCAT(DISTINCT uid) AS users,
COUNT(type) AS typeCount
FROM
`test2`
GROUP BY
type
Run Code Online (Sandbox Code Playgroud)
问题:
但是的顺序uid是不正确的,它应根据降序排列id。
预期结果:
type users typeCount
A 6,3,1,20 6
B 1,20 2
Run Code Online (Sandbox Code Playgroud)
我的结果:
type users typeCount
A 20,6,1,3 6
B 20,1 2
Run Code Online (Sandbox Code Playgroud)
MySQL的神秘。
实际上,无论您通过ID要求DESC,引擎都将按照ASC顺序获取第一个值,因此请首先“翻转”表,然后:
SELECT
type,
GROUP_CONCAT(DISTINCT uid ORDER BY id DESC) AS users,
COUNT(type) AS typeCount
FROM
(SELECT * FROM `test2` ORDER BY id DESC) test2
GROUP BY
type
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
813 次 |
| 最近记录: |