常用分頁查詢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...