我使用以下代码生成某个release_id在表格中显示的次数列表
所以release_id可以在我的表格中多次出现。
SELECT release_id, COUNT( release_id )
FROM charts_extended
GROUP BY release_id
ORDER BY COUNT( release_id ) DESC
LIMIT 0 , 30
示例输出
release_id COUNT(release_id)
1231287 76
177617 73
12218 67
e.g。 1231287在表中出现了76次
我现在如何输出release_id出现的等级数
e.g。
1231287 =#1 12218 =#3
'release_id 1231287是最受欢迎的 '12218是第二最受欢迎的'
答案 0 :(得分:3)
使用rownum模拟。看到这个链接,它看起来像一篇好文章。 http://craftycodeblog.com/2010/09/13/rownum-simulation-with-mysql/
或者这个。
答案 1 :(得分:2)
尝试一下:
select release_id, cnt, @row := @row + 1 rank from (
select release_id, count(release_id) cnt
from releases
group by release_id
order by cnt desc
limit 30
) final, (select @row := 0) init
小提琴here。
您必须使用派生表。如果不这样做,订单就会被打乱。
答案 2 :(得分:1)
听起来像@Steve在MySQL中有很好的答案。我的2美分...我想这取决于应用程序,但我通常在业务逻辑中处理这种处理。在解析行时,您只需将行号添加到它们即可。其中一些将是一个性能问题,但是 - 对我来说 - 通常只是为了保持代码清洁和可维护。
根据您的LIMIT 0,30
,我猜您只想一次显示30个?如果你想要展示超过前30名,我想你会发现在你的业务逻辑中维护它肯定更容易。 Here's在PHP中进行“分页”的一个例子。