我想從sql語句創建記錄的分頁,我能夠獲得所有的下一個和上一個,但最後一個記錄顯示上一個記錄爲下一個由於sql查詢只返回1行而不是2.我將下一個基於第一個結果和前一個作爲第二個結果。如何通過sql來選擇第一個,最後一個以及上一個和下一個通過
數據:
- 蘋果
- 香蕉
- 葡萄
- 橙色
的SQL:
select *
from (select top 1 fruit
FROM table
where fruit > 'Banana'
order by fruit asc) as x
UNION ALL
select *
from (select top 1 fruit
FROM table
where fruit < 'Banana' order by fruit desc) as y
將R特效:
fruit
--------
Grape
Apple
這很好用!
對於第一個記錄 - 我得到正確的結果是第一個記錄是真正的下一個。 對於最後一條記錄 - 我得到一個結果,它是獲取上一條記錄的第二條查詢。但是我無法知道它的最後一條記錄,所以它輸出爲Next而不是Previous。
我將如何確定這是最後一條記錄,並且返回的單個行實際上是以前的記錄?
或
如何讓查詢返回NULL行作爲Next查詢?所以我可以測試一個NULL結果?
獎勵分!
我怎樣纔能有一個查詢,會給我第一個記錄,最後一個記錄和下一個和上一個,所以我可以啓用循環分頁?如果在第一條記錄上顯示前一條記錄。如果最後一條記錄顯示下一條記錄爲第一條記錄?
如果你w螞蟻有「第一」,「最後」,「下一個」等,你需要一些列來**按**排序,例如一個*序列號*或其他東西 - 然後你需要在你的select語句中指定'ORDER BY'子句。沒有'ORDER BY' - >沒有任何類型的排序,並且您無法定義* next *或* previous *而無需排序。 –
下一個應該*(因爲你有)*是'在哪裏水果>'香蕉'ORDER BY水果ASC'。但是你的先前的定義應該是'WHERE fruit <'banana'ORDER BY果實DESC'。 *(用'>'改成'<'。或者,這是一個錯誤的問題?)*另外,要獲得NULL,嘗試使用MAX(水果)和MIN(水果),而不是使用'TOP 1'和'ORDER BY'。 – MatBailie
我修正了錯字@Dems我會嘗試MAX/MIN。 –