1

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

但是,id 不是简单的 -1 和 +1,这意味着如果这个记录 id 是 40,那么前一个 id 可能是 31,而下一个 id 可能是 43。

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

4

2 回答 2

8

选择下一个 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
于 2012-08-16T06:14:44.260 回答
0

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

例如,如果您在记录 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

于 2012-08-16T06:13:27.543 回答