隨著數據庫的發展,如今的數據庫可以儲存大量的數據,內存也是越來越大,但是無論您的內存多大,內存總是顯得不夠用,這時就要涉及到分頁,下文中將為大家帶來詳細的數據庫分頁操作。
1.Oracle:
12 | select * from ( select row_.*, rownum rownum_ from ( query_SQL ) row_ where rownum =< max ) where rownum_ >= min |
2.SQL Server:
12 | select top @pagesize * from tablename where id not in ( select top @pagesize*(@page-1) id from tablename order by id) order by id |
3.MySQL
1 | select * from tablename limit position, counter |
4.DB2
12 | select * from ( select *,rownumber() as ROW_NEXT from tablename) where ROW_NEXT between min and max |
語句形式:
123456 | SELECT TOP 10 * FROM TestTable WHERE (ID NOT IN ( SELECT TOP 20 id FROM TestTable ORDERBY id)) ORDERBYID SELECT TOP 頁大小 * FROM TestTable WHERE ( ID NOT IN ( SELECT TOP 每頁大小-1*待查詢頁數-1 id FROM 表 ORDERBY id)) ORDERBYID |
思路:先查詢出待查詢頁之前的全部條數的id,查詢ID不在這些ID中的指定數量條數。
分頁方案二:(利用ID大于多少和SELECT TOP分頁)效率最高語句形式:
123456 | SELECT TOP 10 * FROM TestTable WHERE (ID>( SELECT MAX (id) FROM ( SELECT TOP20 id FROM TestTable ORDERBYid) AS T))ORDERBY ID SELECT TOP 頁大小* FROM TestTable WHERE (ID>( SELECT MAX (id) FROM ( SELECT TOP 每頁大小*待查詢頁數-1 id FROM 表
ORDERBY id) AS T)) ORDERBY ID |
思路:先獲得待查詢頁的之前全部條數id,獲得它們當中最大的ID號,以此最大ID號為標志,查找比這個ID號大的指定條數。
分頁方案三:1234 | SELECT TOP PageSize * FROM ( SELECT TOP nPage*PageSize * from YOURTABLE order by id) as a order by id desc SELECT TOP 每頁條數 * FROM ( SELECT TOP 待查詢頁*每頁條數) * from YOURTABLE order by id) as a order by id desc |
思路:先正排序查詢出待查詢頁之前(包括當前頁)的全部條數,然后將其倒排序,取指定條數。
新聞熱點
疑難解答