我正在尝试创建一个“上一个”和一个“下一个”按钮,显示1个最后一个记录和1个下一个记录,由sql语句生成。
但是,id不仅仅是-1和+1,这意味着如果此记录ID为40,则前一个id可能为31,而下一个id可能为43。
是否有任何sql函数可以让我实现这个目标?谢谢!
答案 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