【发布时间】:2018-09-03 02:32:11
【问题描述】:
给定这样的表格:
id number anotherNumber
1 1 10
2 1 20
3 2 20
4 2 10
5 3 10
如果我运行查询:
Select *, GROUP_CONCAT(number)
FROM docs
GROUP BY number
我会得到:
id number anotherNumber GROUP_CONCAT(number)
1 1 10 1,1
3 2 20 2,2
5 3 10 3
但我想得到:
id number anotherNumber GROUP_CONCAT(number)
1 1 20 1,1
3 2 20 2,2
5 3 10 3
基本上我希望anotherNumber 列中的数字按 DSEC 顺序排序 - 它应该始终是最高的。
我知道您可以添加 ORDER BYin the GROUP_CONCAT 但这只会影响连接的值,而不是“合并的值”。那么有没有简单的方法呢?
【问题讨论】:
-
按列聚合组很奇怪。为什么要这样做?
-
同意@TimBiegeleisen。结果将始终为
number重复COUNT(*)次。除了以非常迂回的方式发现每个组中的记录数之外,还有什么意义? -
恕我直言
COUNT(*)比GROUP_CONCAT(number)更合适。相同的信息,更少的数据。 -
@tim 同意,但这是一个非常简化的示例,专注于该问题。在我的现实生活中,我正在加入表格等,并且 concat 组中的值不重复。
标签: mysql sql-order-by group-concat