如何在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
提交
取消