我想創建一個「上一個」和「下一個」按鈕,顯示1個最後一個記錄和1個下一個記錄,由sql語句生成。mysql得到上一個和下一個記錄編號
然而,ID不是簡單-1和+1,這意味着如果該記錄ID是40,以前的ID可能是31,而下一個ID可能是43
會不會有任何SQL函數那可以讓我實現這個目標?謝謝!
我想創建一個「上一個」和「下一個」按鈕,顯示1個最後一個記錄和1個下一個記錄,由sql語句生成。mysql得到上一個和下一個記錄編號
然而,ID不是簡單-1和+1,這意味着如果該記錄ID是40,以前的ID可能是31,而下一個ID可能是43
會不會有任何SQL函數那可以讓我實現這個目標?謝謝!
您應該使用限制條款並簡單地跟蹤要跳過的記錄數。
如果您記錄10例如limit 10,1
將跳過前10並帶回一個。 '下一步'按鈕會將查詢更改爲limit 11,1
等等。
只要你有一個order by
(在這種情況下ID字段看起來是完美的),你知道每次都會以完全相同的順序返回數據,所以你可以通過結果集一行走向前後一次可靠。
剪斷從the docs:
LIMIT子句可以被用來限制SELECT語句返回的行數。 LIMIT需要一個或兩個數字參數,它們都必須是非負整數常量(除了使用預準備語句時)。
使用兩個參數,第一個參數指定要返回的第一行的偏移量,第二個參數指定要返回的最大行數。在初始行的偏移量是0(不是1):
SELECT * FROM tbl LIMIT 5,10; # Retrieve rows 6-15
選擇一張ID:
SELECT * FROM your_table WHERE your_id>$current_id ORDER BY your_id ASC LIMIT 1
選擇以前的ID:
SELECT * FROM your_table WHERE your_id<$current_id ORDER BY your_id DESC LIMIT 1
+1無狀態解決方案。 – 2012-08-16 06:20:34
看一看[這個問題](http://stackoverflow.com/questions/1259458/sql-pulling-a-row-for-next-or-previous-row-of-a-current-row) – 2012-08-16 06:13:05
我不認爲有一個通用的解決方案,我們將不得不l在您的餐桌結構處提供特定解決方案。 – 2012-08-16 06:14:01