MySQL 获取上一个和下一个记录 ID


mysql get previous and next record id

我正在尝试创建一个"上一个"和一个"下一个"按钮,显示 1 个上一条记录和 1 条下一条记录,由 sql 语句生成。

但是,id 不仅仅是 -1 和 +1,这意味着如果此记录 id 为 40,则上一个 id 可能是 31,而下一个 id 可能是 43。

是否有任何 sql 函数可以让我实现这一目标?谢谢!

选择下一个 id:

SELECT * FROM your_table WHERE your_id>$current_id ORDER BY your_id ASC LIMIT 1

选择上一个 id:

SELECT * FROM your_table WHERE your_id<$current_id ORDER BY your_id DESC LIMIT 1

您应该使用限制子句并简单地跟踪要跳过的记录数。

例如,如果您在记录 10 上,limit 10,1将跳过前 10 个并带回一个。"下一步"按钮会将查询更改为limit 11,1,依此类推。

只要您知道order by(在本例中为 ID 字段似乎是完美的),每次都会以完全相同的顺序返回数据,因此您可以可靠地一次一行地在结果集中进行和向后移动。

从文档中截取:

LIMIT 子句可用于约束 SELECT 语句返回的行数。LIMIT 采用一个或两个数值参数,它们都必须是非负整数常量(使用预准备语句时除外)。

使用两个参数,第一个参数指定要返回

的第一行的偏移量,第二个参数指定要返回的最大行数。初始行的偏移量为 0(而不是 1):

SELECT * FROM tbl LIMIT 5,10; # Retrieve rows 6-15