如何按值将组作为 1 个带逗号的框?

Posted

技术标签:

【中文标题】如何按值将组作为 1 个带逗号的框?【英文标题】:How to get the group by value as 1 box with comma? 【发布时间】:2020-09-19 09:21:56 【问题描述】:

我使用的是 SQL 版本 5.5。我在第 1 行中按 parentid 选择组中的所有值时遇到问题。我可以知道如何按 parentid 分组并显示表格结果可以用逗号分隔吗?例如结果是 1,2,3,4,9

Table name: abc
+----+----------+
| id | parentid |
+----+----------+    
| 1  |   1      |
| 2  |   1      |
| 3  |   2      |
| 4  |   3      |
| 5  |   2      |
| 6  |   4      |
| 7  |   9      |
+----+----------+

我的 SQL 按如下查询分组:

select parentid from abc group by parentid

我想要按 parentid 分组后的预期结果,如下表所示:

    +---------------------+
    |      parentid       |
    +---------------------+    
    |     1,2,3,4,9       |
    +---------------------+

希望有人能指导我如何解决它。谢谢。

【问题讨论】:

如果您在 parentid 上进行分组,那么 parentId 在每种方式中都是唯一的。所以你不能在同一列上获得 group_concat 。执行 group_concat 并删除 group by @aRvi 是这样 select GROUP_CONCAT (parentid) from abc 吗? @Martheen 我不能在查询中使用 GROUP_CONCAT。你能告诉我怎么做吗? 考虑处理应用代码中数据显示的问题 【参考方案1】:

可以通过结合GROUP_CONCATDISTINCT来完成:

SELECT GROUP_CONCAT(DISTINCT parentid ORDER BY parentid) FROM abc;

【讨论】:

以上是关于如何按值将组作为 1 个带逗号的框?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过检查值添加逗号和小数点

如何禁止逗号作为小数分隔符

如何从csv文件中读取包含逗号的列表作为列?

如何按值将变量传递给匿名javascript函数?

当某些数字包含逗号作为千位分隔符时如何读取数据?

逗号分隔的表达式作为 for 循环中的条件如何工作?