一條sql 語句搞定資料庫分頁

2021-03-31 08:56:57 字數 760 閱讀 6206

一條語句搞定資料庫分頁

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

經測試,以上分頁方法比使用臨時表分頁速度還要快,並且簡單易用

一條SQL語句搞定SQLServer分頁的幾種方式

適用於sql2000 2005 select top頁大小 from table1 where id not in select top頁大小 頁數 1 id from table1 order byid order byid 適用2000 2005 select top頁大小 from table...

一條分頁的SQL語句

在網頁中如果顯示的資料太多就會佔據過多的頁面,而且顯示速度也會很慢。為了控制每次在頁面上顯示資料的數量,就可以利用分頁來顯示資料。select top pagesize from table where id notin select top prenum id from table order b...

oracle資料庫一條sql語句批量插入資料

最近有個功能是需要重置不同身份的密碼根據不同的規則,其中乙個規則就是手機號碼後六位,有多個身份,並且底層資料封裝的比較死,只能通過公用方法去更新密碼,但是這好幾個身份都有共同的資料特性,使用者編碼,使用者名稱,手機號碼,將這些字段存入一張臨時表,在開始時根據需要選中某個單位的某個身份進行密碼重置,這...