2012-08-16 64 views
1

我想創建一個「上一個」和「下一個」按鈕,顯示1個最後一個記錄和1個下一個記錄,由sql語句生成。mysql得到上一個和下一個記錄編號

然而,ID不是簡單-1和+1,這意味着如果該記錄ID是40,以前的ID可能是31,而下一個ID可能是43

會不會有任何SQL函數那可以讓我實現這個目標?謝謝!

+0

看一看[這個問題](http://stackoverflow.com/questions/1259458/sql-pulling-a-row-for-next-or-previous-row-of-a-current-row) – 2012-08-16 06:13:05

+0

我不認爲有一個通用的解決方案,我們將不得不l在您的餐桌結構處提供特定解決方案。 – 2012-08-16 06:14:01

回答

0

您應該使用限制條款並簡單地跟蹤要跳過的記錄數。

如果您記錄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

8

選擇一張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 
+0

+1無狀態解決方案。 – 2012-08-16 06:20:34

相關問題