我试图做一个论坛排名系统,它可以根据以前的记录一次获得一个记录。根据排名和先前选择的行选择行
示例表是:
| POST_ID | POST_REPLIES | -------------------------- | 1 | 5 | | 2 | 2 | | 3 | 8 | | 4 | 8 | | 5 | 12 | --------------------------
如果我做一个简单的查询ORDER BY POST_REPLIES DESC
,我得到POST_ID 5, 4, 3, 1, 2
。
但我想要做的是只获得下一行(所以一次一行),并基于它现在的帖子。
例如:如果我目前观察后#3,将有一个按钮,标有“下一个职位与大多数答复”,这将指向发布#4
我目前有处理重复的麻烦,如我遇到了3到4之间的循环(3分到4,4分到3而不是5)
我曾经玩过将表加入到自身中,并比较了行,看看哪个更大或更小,但由于我使用1的限制,因此该行始终为1,因此无用。所以我的基本查询是:
SELECT * FROM posts
WHERE post_id != '$currentPost'
ORDER BY POST_REPLIES DESC, POST_ID DESC LIMIT 1
我该怎么做?
你打算得到一个单一的答复,而不是组? – 2012-03-14 04:32:53
正确,我试图在当前正在查看的人之后获得下一个“热门”帖子。 – Bill 2012-03-17 02:22:05
对于所有想知道的人,我最终创建了一个单独的排名表,它每4小时更新一次cron,并使用生成的排名#作为转到上一张到下一张图片的手段。由于我在SQL方面的经验不足,我之前参与的单个查询可能会涉及太多的subquerys。我的查询是mattedgod和newtovers解决方案的混合,但花了大约2-3秒来执行,这是不可接受的。 – Bill 2012-03-27 14:50:10