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的主要内容,如果未能解决你的问题,请参考以下文章

MySQL实现根据当前ID读取上一条和下一条记录

如何在MySQL中查询当前数据上一条和下一条的记录

如何获取SQL查询当前数据上一条和下一条的记录?

asp中如何读取当前记录的上一条和下一条记录

MYSQL - 按 ID 获取下一条和上一条记录 - 超链接的 HTML

关于查询sql中数据上一条记录和下一条记录的sql语句......