如何在MySQL中获取下一个/上一个记录?

如何在MySQL中获取下一个/上一个记录?

假设我有ID 3,4,7,9的记录,我希望能够通过下一个/上一个链接导航从一个到另一个。问题是,我不知道如何获取最近的更高ID的记录。

因此,当我有一个ID为4的记录时,我需要能够获取下一个现有记录,这将是7.查询可能看起来像

SELECT * FROM foo WHERE id = 4 OFFSET 1

如何在不获取整个结果集并手动迭代的情况下获取下一个/上一个记录?

我正在使用MySQL 5。


拉莫斯之舞
浏览 1080回答 3
3回答

烙印99

除了cemkalyoncu的解决方案:下一条记录:SELECT&nbsp;*&nbsp;FROM&nbsp;foo&nbsp;WHERE&nbsp;id&nbsp;>&nbsp;4&nbsp;ORDER&nbsp;BY&nbsp;id&nbsp;LIMIT&nbsp;1;之前的纪录:SELECT&nbsp;*&nbsp;FROM&nbsp;foo&nbsp;WHERE&nbsp;id&nbsp;<&nbsp;4&nbsp;ORDER&nbsp;BY&nbsp;id&nbsp;DESC&nbsp;LIMIT&nbsp;1;编辑:由于这个答案最近得到了一些upvotes,我真的想强调我之前做的关于理解主键列不是要排序的列的评论,因为MySQL不保证更高,自动递增,值必须在以后添加。如果你不关心这个,只需要更高(或更低)的记录,id那么这就足够了。只是不要将其用作确定记录是否实际在以后(或更早)添加的方法。例如,请考虑使用datetime列进行排序。

慕森卡

以上所有解决方案都需要两次数据库调用&nbsp;下面的sql代码将两个sql语句合并为一个。select&nbsp;*&nbsp;from&nbsp;foo&nbsp; where&nbsp;(&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;id&nbsp;=&nbsp;IFNULL((select&nbsp;min(id)&nbsp;from&nbsp;foo&nbsp;where&nbsp;id&nbsp;>&nbsp;4),0)&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;or&nbsp;&nbsp;id&nbsp;=&nbsp;IFNULL((select&nbsp;max(id)&nbsp;from&nbsp;foo&nbsp;where&nbsp;id&nbsp;<&nbsp;4),0) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)

繁星点点滴滴

下一个:select&nbsp;*&nbsp;from&nbsp;foo&nbsp;where&nbsp;id&nbsp;=&nbsp;(select&nbsp;min(id)&nbsp;from&nbsp;foo&nbsp;where&nbsp;id&nbsp;>&nbsp;4)以前:select&nbsp;*&nbsp;from&nbsp;foo&nbsp;where&nbsp;id&nbsp;=&nbsp;(select&nbsp;max(id)&nbsp;from&nbsp;foo&nbsp;where&nbsp;id&nbsp;<&nbsp;4)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

MySQL