【发布时间】:2009-03-14 00:50:46
【问题描述】:
我有一个 bbPress 论坛使用的名为 bb_posts 的 MySQL 表。它有一个名为 topid_id 的自动增量字段和另一个名为 topic_poster 的字段。
我正在尝试编写一个函数来查找“同一作者的下一篇文章”。因此,例如,假设用户在显示主题 123 的特定页面上。如果您执行 SQL 查询:
SELECT *
FROM `bb_topics`
WHERE `topic_poster` = 5
ORDER BY `topic_id` ASC
这可能会返回以下行:
topic_id 主题海报 6 5 50 5 123 5 199 5 2039 5我想做的是编写一个返回这两行的 SQL 查询:
topic_id 主题海报 50 5 199 5这将是 topic_id 为 123 的行之前的行,以及该行之后的行。
如果在一个查询中做这件事太难了,把它分成两个查询肯定没问题...
我想避免执行整个 SQL 查询(“SELECT * FROM bb_topics WHERE topic_poster = 5”)并循环遍历结果,因为结果集有时很大。
这可能吗? :-)
【问题讨论】:
-
FYI SQL 分析函数让您可以使用 LEAD 和 LAG 函数执行此操作。不确定 mySQL 是否支持它们,但 SQL2008 支持。