分頁查詢sql

2022-07-13 11:30:12 字數 1690 閱讀 1599

常用分頁查詢sql

先介紹乙個面試題,查詢表中第200-300條資料。應用既是分頁查詢,先通過子查詢對資料進行標記,如oracle通過rownum進行標記,再取乙個區間的資料。

一,oracle

關鍵字 rownum

規則:  

select * from (select a.*,rownum rc from 表名 where rownum<=endrow) a where a.rc>=startrow

或 select *

from (select a.*, rownum rn

from (select * from table_name) a

where rownum <= 40)

where rn > 20

其中的select * from table_name表示沒有進行分頁時的sql查詢語句,而rownum 和rn 限定了查詢資料的範圍。

例項:select * from ( select ol.*, rownum  rc from offsiteoutreachteam_list ol where rownum <= 48 ) ol where ol.rc >= 9      

select * from (select a.*, rownum rn from (select * from offsiteoutreachteam_list) a where rownum <= 40) where rn > 20      

select * from ( select ol.*, rownum rc from offsiteoutreachteam_list ol) where rc >= 9 and rc <= 20

select * from ( select ol.*, rownum rc from offsiteoutreachteam_list ol) where rc between 10 and 20

注意:可以通過排序,避免不同頁出現重複的資料。

select* from

2  (  

3  selecta.*, rownum rn  

4  from(selectid, owner, object_name fromtest whereowner isnotnullorderbyowner, id) a  

5  whererownum <= 20  

6  )  

7  wherern >= 11;

二,mysql

關鍵字:limit

mysql資料庫分頁     select * from 表名 limit startrow,pagesize     (pagesize為每頁顯示的記錄條數)    

三,sql servel

關鍵字:top

3.sql server 2000資料庫分頁     select top pagesize * from 表名 where 列名 not in(select top pagesize*page 列名 from 表名 order by列名) order by列名

4.sql server 2005資料庫分頁     select * from (select 列名,row_number() over(order by 列名1) as 別名from 表名) as t where t.列名1>=startrow and t.列名1<=endrow    

SQL分頁查詢

分頁sql查詢在程式設計的應用很多,主要有儲存過程分頁和sql分頁兩種,我比較喜歡用sql分頁,主要是很方便。為了提高查詢效率,應在排序欄位上加索引。sql分頁查詢的原理很簡單,比如你要查100條資料中的30 40條,你先查詢出前40條,再把這30條倒序,再查出這倒序後的前十條,最後把這十條倒序就是...

sql分頁查詢

declare id int declare moverecords int declare currentpage int declare pagesize int set currentpage 300 set pagesize 100 currentpage和 pagesize是傳入引數 se...

SQL分頁查詢

關於sql語句分頁,網上也有很多啦,我貼一部分過來,並且總結自己已知的分頁到下面,方便日後查閱。方法1 適用於 sql server 2000 2005 1 select top 頁大小 2from table1 3where id not in4 5select top 頁大小 頁數 1 id f...