我有一个名为bb_posts的MySQL表,由bbPress论坛使用.它有一个名为topid_id的自动增量字段和另一个名为topic_poster的字段.
我正在尝试编写一个找到"同一作者的下一篇文章"的函数.因此,例如,假设用户位于显示主题123的特定页面上.如果您执行SQL查询:
SELECT *
FROM `bb_topics`
WHERE `topic_poster` = 5
ORDER BY `topic_id` ASC
Run Code Online (Sandbox Code Playgroud)
这可能会返回以下行:
topic_id topic_poster 6 5 50 5 123 5 199 5 2039 5
我想做的是写一个返回这两行的SQL查询:
topic_id topic_poster 50 5 199 5
这将是具有topic_id为123的行的PRIOR行,以及该行的AFTER行.
如果在一个查询中执行此操作太难了,那么将其分解为两个查询肯定是可以的...
我想避免做整个SQL查询("SELECT*FROM bb_topicsWHERE topic_poster= 5")并循环遍历结果,因为结果集有时很大.
这可能吗?:-)
cdo*_*ner 14
下一个:
SELECT * FROM `bb_topics`
WHERE `topic_id` =
(select min(`topic_id`) FROM `bb_topics` where `topic_id` > 123
and `topic_poster` = 5)
Run Code Online (Sandbox Code Playgroud)
前一个:
SELECT * FROM `bb_topics`
WHERE `topic_id` =
(select max(`topic_id`) FROM `bb_topics` where `topic_id` < 123
and `topic_poster` = 5)
Run Code Online (Sandbox Code Playgroud)
都:
SELECT * FROM `bb_topics`
WHERE `topic_id` =
(select min(`topic_id`) FROM `bb_topics` where `topic_id` > 123
and `topic_poster` = 5)
or `topic_id` =
(select max(`topic_id`) FROM `bb_topics` where `topic_id` < 123
and `topic_poster` = 5)
Run Code Online (Sandbox Code Playgroud)