mysql获取上一条和下一条记录id
Posted
技术标签:
【中文标题】mysql获取上一条和下一条记录id【英文标题】:mysql get previous and next record id 【发布时间】:2012-08-16 06:11:15 【问题描述】:我正在尝试创建一个“上一个”和一个“下一个”按钮,显示 1 条上一条记录和 1 条即将到来的下一条记录,由 sql 语句生成。
但是id不是简单的-1和+1,也就是说如果这条记录id是40,前一个id可能是31,下一个id可能是43。
是否有任何 sql 函数可以让我实现这个目标?谢谢!
【问题讨论】:
看看this question 我认为没有通用的解决方案,具体解决方案我们将不得不查看您的表结构。 【参考方案1】:选择下一个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
【讨论】:
【参考方案2】:您应该使用限制子句并简单地跟踪要跳过的记录数。
例如,如果您在记录 10,limit 10,1
将跳过前 10 个并带回一个。 “下一步”按钮会将查询更改为 limit 11,1
等等。
只要您知道order by
(在这种情况下,ID 字段看起来很完美),数据每次都会以完全相同的顺序返回,因此您可以在结果集中前后移动可靠地一次排。
截自the docs:
LIMIT 子句可用于限制 SELECT 语句返回的行数。 LIMIT 接受一个或两个数字参数,它们都必须是非负整数常量(使用准备好的语句时除外)。
有两个参数,第一个参数指定要返回的第一行的偏移量,第二个参数指定要返回的最大行数。初始行的偏移量为0(不是1):
SELECT * FROM tbl LIMIT 5,10; # Retrieve rows 6-15
【讨论】:
以上是关于mysql获取上一条和下一条记录id的主要内容,如果未能解决你的问题,请参考以下文章