【发布时间】:2015-04-18 12:11:04
【问题描述】:
我在想以一种相当奇怪的方式从 db 获取东西时遇到了一些麻烦。说我有下一张桌子
ID | Rating
229 | 3
229 | 2
229 | 4
229 | 2
240 | 3
233 | 1
233 | 4
233 | 1
233 | 5
229 | 4
240 | 4
我需要让结果看起来像
229 | 4,3,2 | 2,1,2
240 | 4,3 | 1,1
233 | 5,4,1 | 1,1,2
基本上,我需要第 2 列按 desc 顺序列出此 id 的所有唯一分数,第 3 列需要用逗号分隔每个这些唯一分数的计数,所以就像上面的示例一样,对于第一个 id,它将为 2,1,2,因为该 id 获得了 2 个评分为 4、1 个评分为 3 和 2 个评分为 2。这需要与第 2 列中的事物的顺序相同。我试过了
select object_id, group_concat(concat(rating)) list, group_concat(qty)
from (
select object_id, rating, count(rating) qty
from wp_fb_ratings
group by rating, object_id
order by rating desc
) n
group by object_id
我需要什么,除了它完全忽略 order by 并返回
229 | 3,2,4 | 1,2,2
233 | 1,4,5 | 2,1,1
240 | 3,4 | 1,1
对此有什么解决方法?或者也许应该以其他方式完成?
【问题讨论】:
-
只是好奇,你为什么需要这样?
-
如果只运行内部选择,那么它是有序的吗?
标签: mysql