如何在MySQL中获取下一个/上一个记录?假设我有ID 3,4,7,9的记录,我希望能够通过下一个/上一个链接导航从一个到另一个。问题是,我不知道如何获取最近的更高ID的记录。因此,当我有一个ID为4的记录时,我需要能够获取下一个现有记录,这将是7.查询可能看起来像SELECT * FROM foo WHERE id = 4 OFFSET 1如何在不获取整个结果集并手动迭代的情况下获取下一个/上一个记录?我正在使用MySQL 5。
3 回答
烙印99
TA贡献1829条经验 获得超13个赞
除了cemkalyoncu的解决方案:
下一条记录:
SELECT * FROM foo WHERE id > 4 ORDER BY id LIMIT 1;
之前的纪录:
SELECT * FROM foo WHERE id < 4 ORDER BY id DESC LIMIT 1;
编辑:由于这个答案最近得到了一些upvotes,我真的想强调我之前做的关于理解主键列不是要排序的列的评论,因为MySQL不保证更高,自动递增,值必须在以后添加。
如果你不关心这个,只需要更高(或更低)的记录,id
那么这就足够了。只是不要将其用作确定记录是否实际在以后(或更早)添加的方法。例如,请考虑使用datetime列进行排序。
慕森卡
TA贡献1806条经验 获得超8个赞
以上所有解决方案都需要两次数据库调用 下面的sql代码将两个sql语句合并为一个。
select * from foo where ( id = IFNULL((select min(id) from foo where id > 4),0) or id = IFNULL((select max(id) from foo where id < 4),0) )
繁星点点滴滴
TA贡献1803条经验 获得超3个赞
下一个:
select * from foo where id = (select min(id) from foo where id > 4)
以前:
select * from foo where id = (select max(id) from foo where id < 4)
添加回答
举报
0/150
提交
取消