oracle的分頁查詢碰到的一個小問題,oracle分頁碰到

來源:互聯網
上載者:User

oracle的分頁查詢碰到的一個小問題,oracle分頁碰到

訂單表,與訂單資訊表(多個訂單資訊列有同一個訂單id)

查出所有訂單以及其資訊並按照訂單分頁

select * from(select a. * , (DENSE_RANK() OVER(ORDER BY id DESC)) AS numindex from(SELECT o. * , DENSE_RANK() OVER(ORDER BY o.id DESC) AS rn from order o) a where rn <= 10) where numindex > 0

查出所有訂單以及其資訊並按照訂單資訊分頁
SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT * FROM order o  left join orderdetail od on o.id=od.orderid ) A WHERE ROWNUM <= 10 ) WHERE RN >= 0

rank() over,dense_rank(),row_number() 的區別

rank() over是的作用是查出指定條件後進行一個排名,但是有一個特點。假如是對學生排名,那麼實用這個函數,成績相同的兩名是並列,例如1 2 2 4。
















dense_rank()的作用和rank()很像,唯一的一點區別就是,領命學生的成績並列以後,下一位同學並不空出並列所佔的名次,例如1 2 2 3。



row_number()就不一樣了,它和上面兩種的區別就很明顯了,這個函數不需要考慮是否並列,哪怕根據條件查詢出來的數值相同也會進行連續排名,如

rank() over,dense_rank(),row_number() 的用法詳解http://www.cnblogs.com/wuyisky/archive/2010/02/24/oracle_rank.html 


相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.