获取当前查询记录的上一条记录和下一条记录ID

比如有这么一个需求,获取当前文章记录数据并且返回当前记录的上一条记录ID和下一条记录ID,用于前端文章详情页的上一篇和下一篇文章获取,其实也特别的简单,顺便记录一下!

简略数据源如下:

简略数据源

查询分析

要获取当前查询记录ID为1000的记录的上一条记录ID: 999,可以在ID小于1000的范围内获取ID最大值;获取下一条记录ID: 1001,可以在大于1000的范围内获取ID最小值,那么这个事件也就算是完成了!

注意:获取上一条记录ID和下一条记录ID的临界点就是当前查询记录ID为1000的记录哦~

获取上一条记录ID

1
2
3
4
5
6
7
mysql> select max(id) as last_id from article where id < 1000;
+---------+
| last_id |
+---------+
|     999 |
+---------+
1 row in set (0.00 sec)

获取下一条记录ID

1
2
3
4
5
6
7
mysql> select min(id) as next_id from article where id > 1000;
+---------+
| next_id |
+---------+
|    1001 |
+---------+
1 row in set (0.01 sec)

获取当前记录数据包含上一条和下一条记录ID

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
mysql> select
    ->     id,
    ->     title,
    ->     (select max(id) from article where id < 1000) as last_id,
    ->     (select min(id) from article where id > 1000) as next_id
    -> from
    ->     article
    -> where
    ->     id = 1000\G
*************************** 1. row ***************************
     id: 1000
  title: HelloWorld 🎉🎉🎉
last_id: 999
next_id: 1001
1 row in set (0.00 sec)
comments powered by Disqus