MySQL-生成最“流行”记录的列表
我使用下面的代码生成一个列表,列出某个发布id在表中出现的次数 因此,release_id可以在我的表中出现多次MySQL-生成最“流行”记录的列表,mysql,Mysql,我使用下面的代码生成一个列表,列出某个发布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
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次
我现在如何输出版本id显示的排名中的数字
e、 g
1231287=1
12218=3
“release_id 1231287”是最流行的
“12218是第二流行的”使用rownum模拟。看到这个链接,它看起来像一篇好文章。 或者这个
使用rownum模拟。看到这个链接,它看起来像一篇好文章。 或者这个
听起来@Steve在MySQL中有一个很好的答案。我的2美分。。。我想这取决于应用程序,但我通常在业务逻辑中处理此类处理。在解析行时,只需将行号添加到行中即可。其中一些问题将是性能问题,但对我来说,这通常只是为了保持代码的干净性和可维护性
根据您的限制0,30,我猜您一次只想显示30?如果你想展示的不仅仅是前30名,我想你会发现,在你的业务逻辑中,在某个地方维护这一点肯定更容易。在PHP中进行分页的一个例子。听起来@Steve有一个很好的答案,可以在MySQL中实现这一点。我的2美分。。。我想这取决于应用程序,但我通常在业务逻辑中处理此类处理。在解析行时,只需将行号添加到行中即可。其中一些问题将是性能问题,但对我来说,这通常只是为了保持代码的干净性和可维护性 根据您的限制0,30,我猜您一次只想显示30?如果你想展示的不仅仅是前30名,我想你会发现,在你的业务逻辑中,在某个地方维护这一点肯定更容易。在PHP中执行分页的一个示例。尝试一下:
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
小提琴
您必须使用派生表。如果不这样做,订单将被打乱。尝试一下:
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
小提琴
您必须使用派生表。如果不这样做,则顺序将被打乱。我在自己的一个表上测试了这一点,似乎执行GROUP BY会导致问题,可能是因为返回的行不是实际从表中获取的行。我在自己的一个表上测试了这一点,似乎执行GROUP BY会导致问题,可能是因为返回的行不是实际从表中获取的行。我的“行编号”列中的数字最终会出现顺序错误。