亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在MySQL中獲取下一個/上一個記錄?

如何在MySQL中獲取下一個/上一個記錄?

拉莫斯之舞 2019-07-25 19:51:05
如何在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列進行排序。


查看完整回答
反對 回復 2019-07-25
?
慕森卡

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)
      )


查看完整回答
反對 回復 2019-07-25
?
繁星點點滴滴

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)


查看完整回答
反對 回復 2019-07-25
  • 3 回答
  • 0 關注
  • 1106 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號