分頁查詢sql
一,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 SELECT A.*, ROWNUM RN
- 4 FROM (SELECT ID, OWNER, OBJECT_NAME FROM TEST WHERE OWNER IS NOT NULL ORDER BY OWNER, ID) A
- 5 WHERE ROWNUM <= 20
- 6 )
- 7 WHERE RN >= 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
補加:
1.oracle資料庫分頁
select * from
(select a.*,rownum rc from 表名 where rownum<=endrow) a
where a.rc>=startrow;
2.DB2資料庫分頁
Select * from
(select rownumber() over() as rc,a.* from
(select * from 表名 order by 列名) as a)
where rc between startrow and endrow;
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;
5.MySQL資料庫分頁
Select * from 表名 limit startrow,pagesize;
(Pagesize為每頁顯示的記錄條數)
6.通用模式
select * from
(select * from student where sid not in
(select sid from student where rownum<=(currentPage-1)*pageSize)
) where rownum <=pageSize;