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