antshome(原作)首發:CSDN
一條語句搞定資料庫分頁
select top 10 b.* from (select top 20 主鍵字段,排序字段from 表名order by 排序字段desc) a,表名b where b.主鍵字段= a.主鍵欄位order by a.排序欄位
10 = 每頁記錄數
20 = (目前頁+ 1) * 每頁記錄數
以上語句即可以實現分頁,但是最後取出的結果排序是升序,如果需要結果集為降序(例如時間),則有兩種方法可以處理
1.使用以下語句,但效率可能要降低一些
select * from 表名b, (select top 10 主鍵字段,排序字段from (select top 20 主鍵字段,排序字段from表名order by 排序字段desc) a order by 排序字段) c where b.主鍵字段= c.主鍵字段order by c.排序字段desc
2.在ado裡處理,將記錄集遊標移到最後,然後前移
''以下為asp範例
set rsTemp = Server.CreateObject("adodb.recordset")
rsTemp.Open 語句,conn,1,1
rsTemp.MoveLast
for i = 1 to rsTemp.RecordCount
'取值....
rsTemp.MovePrevious
next
經測試,以上分頁法比使用臨時表分頁速度還要快,且簡單易用