我正在尝试创建一个论坛排名系统,该系统可以基于上一条记录每次获取一条记录。
示例表格如下: | POST_ID | POST_REPLIES | -------------------------- | 1 | 5 | | 2 | 2 | | 3 | 8 | | 4 | 8 | | 5 | 12 |
如果我执行简单的查询
但是我的目标是只获取下一行记录(因此每次仅一行),并且基于当前所在的帖子。
例如:如果我当前正在查看第三篇帖子,则会有一个标签为“下一篇回复最多的帖子”的按钮,该按钮将指向第四篇帖子。
我目前遇到的问题是如何处理重复项,因为我在3和4之间陷入了循环(3指向4,4指向3而不是5)。
我已经尝试将表连接到自身,并比较行以查看哪个更大或更小,但由于我使用的是limit 1,所以行总是1,因此无用。 因此,我使用的基本查询是:
示例表格如下: | 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,4指向3而不是5)。
我已经尝试将表连接到自身,并比较行以查看哪个更大或更小,但由于我使用的是limit 1,所以行总是1,因此无用。 因此,我使用的基本查询是:
SELECT * FROM posts
WHERE post_id != '$currentPost'
ORDER BY POST_REPLIES DESC, POST_ID DESC LIMIT 1
我该如何做到这一点?