【发布时间】:2011-04-12 01:21:36
【问题描述】:
假设我有一个使用 Rails 和 MySQL 的博客应用程序的 Posts 和 Comments。
我想按 cmets 的数量对帖子进行排名。 (注意:不只是排序,而是得到他们实际的 1st,2nd,3rd rank)。
另外,给定一个帖子,我希望能够在不将所有帖子加载到 Rails 并搜索它们的情况下获得它的排名。
例如"这篇文章的 cmets 数量排名第 372"
最后,如果两个帖子的 cmets 数量相同,则它们的排名应该相同 - 所以平局是可以的。
我在 MySQL 中似乎有一些巧妙的解决方案,例如这篇文章: How do I Handle Ties When Ranking Results in MySQL?
我想知道是否有一个更简单的解决方案,通过规范化帖子表的附加字段中的一些数据。
有没有人看到这个的好方法?
【问题讨论】:
-
定义排名。总可以在帖子的一个计数器缓存列中缓存cmets的数量,然后搜索max cmets,但是没有更详细的排名要求,我想不出别的了。
标签: mysql ruby-on-rails ranking rank