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

时间:2012-08-16 06:11:16

标签: php sql

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

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

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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

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

只要您知道order by(在这种情况下,ID字段看起来很完美),每次都会以完全相同的顺序返回数据,这样您就可以走向forawrds并向后走结果集可靠地一次一行。

the docs剪掉:

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

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

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