一條語句搞定數據庫分頁
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
經測試,以上分頁方法比使用臨時表分頁速度還要快,並且簡單易用