各類數據庫分頁語句整理以及Oracle數據庫中的ROWNUM和ORDER BY的區別

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.PostgreSQL數據庫分頁
Select * from 表名 limit pagesize,offset startrow
(Pagesize爲每頁顯示的記錄條數.)
 
 7.通用模式select * from (
 select * from tb_student where sid not in(
     select sid from tb_student where rownum<=(currentPage-1)*pageSize)
) where rownum <=pageSize;

分頁是將數據庫的數據,利用一些特殊的sql語句來進行查詢,顯示理所應當顯示的內容,更恰當的說能夠是對SQL語句的靈活運用,對邏輯思惟的簡單使用sql

Oracle數據庫中的ROWNUM和ORDER BY執行順序

http://www.devx.com/tips/Tip/14251(原文出自地)數據庫

SELECT firstname
FROM   employee
WHERE  ROWNUM < 5 
ORDER BY empid

  empid若是是主鍵,這個語句能夠返回指望的結果,按empid排序且rownum也是升序排列oracle

  若是order by的字段不是主鍵,返回的結果按empid排序但rownum的順序是亂的,和插入DB的時間有關spa

相關文章
相關標籤/搜索