首页 >数据库 >mysql教程 >如何控制 MySQL GROUP_CONCAT 函数中值的顺序?

如何控制 MySQL GROUP_CONCAT 函数中值的顺序?

DDD
DDD原创
2024-12-01 15:44:12579浏览

How Can I Control the Order of Values in MySQL's GROUP_CONCAT Function?

对 GROUP_CONCAT 中的结果进行排序

使用 GROUP_CONCAT 函数组合分组行的值时,维护这些值的顺序非常有用。

问题:无序结果

假设我们有一个名为“li”,包含以下列:client_id、观看次数和百分比。我们希望按 client_id 对行进行分组并连接视图值。我们首先尝试以下操作:

SELECT li.client_id,
       group_concat(li.views) AS views,
       group_concat(li.percentage) FROM li
       GROUP BY client_id;

这会产生视图连接的结果,但顺序是任意的:

+-----------+-------------------+-----------------------------+
| client_id | views             | group_concat(li.percentage) |
+-----------+-------------------+-----------------------------+
|         1 | 6,4,9,2,7,5,3,8,1 | 20,55,56,67,80,66,33,34,52  |
+-----------+-------------------+-----------------------------+

解决方案:在 GROUP_CONCAT 内排序

到对 GROUP_CONCAT 中的结果进行排序,我们可以在函数:

SELECT li.client_id,
       group_concat(li.views ORDER BY li.views ASC) AS views,
       group_concat(li.percentage ORDER BY li.views ASC) AS percentage
       FROM li
       GROUP BY client_id

这将以升序对视图列进行排序,同时保持相应的百分比值保持相同的顺序:

+-----------+-------------------+----------------------------+
| client_id | views             | percentage                 |
+-----------+-------------------+----------------------------+
|         1 | 1,2,3,4,5,6,7,8,9 | 52,67,33,55,66,20,80,34,56 |
+-----------+-------------------+----------------------------+

以上是如何控制 MySQL GROUP_CONCAT 函数中值的顺序?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn