oracle 中 rownum 和 row_number()

來源:互聯網
上載者:User

標籤:des   style   blog   http   color   使用   資料   ar   

  簡單的介紹下oracle 中rownum 和 row_number() 使用,執行個體示範。

  參照:http://www.cnblogs.com/zjrstar/archive/2006/08/31/491090.html  

  我們先建立一個例子用以說明,偷個懶,就用上面那位童鞋的。

create table student (ID char(6), name VARCHAR2(10));insert into student values(‘200001‘,‘張一‘);insert into student values(‘200002‘,‘王二‘);insert into student values(‘200003‘,‘李三‘);insert into student values(‘200004‘,‘趙四‘);commit;

1)

SQL> select * from student where rownum>=1;

ID NAME
------ ----------
200001 張一
200002 王二
200003 李三
200004 趙四

2)

SQL> select rownum ,t.* from student t where rownum>=1;

ROWNUM ID NAME
---------- ------ ----------
1 200001 張一
2 200002 王二
3 200003 李三
4 200004 趙四

3)

SQL> select rownum ,t.* from student t where rownum <3;

ROWNUM ID NAME
---------- ------ ----------
1 200001 張一
2 200002 王二

4)

SQL> select rownum ,t.* from student t where rownum >=2;

未選定行

SQL>

Why?=>1.rownum是一個偽列;rownum總是從1開始,連續不斷。

5)

SQL> select rownum,t.* from student t order by name desc;

ROWNUM ID NAME
---------- ------ ----------
4 200004 趙四
1 200001 張一
2 200002 王二
3 200003 李三

6)

SQL> select row_number() over(order by name desc) rn ,t.* from student t;

RN ID NAME
---------- ------ ----------
1 200004 趙四
2 200001 張一
3 200002 王二
4 200003 李三

以上5)和6)可以做比較:為什麼兩者的結果rownum和rn不同,注意row_number() over(...)用法。

7)

SQL> select * from (select rownum rn,t.* from student t) tt where tt.rn between
2 and  3;

RN ID NAME
---------- ------ ----------
2 200002 王二
3 200003 李三

這種方式可以分頁取資料,但是請記得上述的5),偽列rownum不是有序的;如果要進行排序的話,請盡量使用 rownumber() over(...)

 

8)

SQL> select * from (select row_number() over(order by name desc) rn ,t.* from st
udent t) tt where tt.rn between 2 and 3;

RN ID NAME
---------- ------ ----------
2 200001 張一
3 200002 王二

9)

SQL> select * from (select rownum rn ,t.* from student t order by name desc)tt w
here tt.rn between 2 and 3;

RN ID NAME
---------- ------ ----------
2 200002 王二
3 200003 李三

請比較8)和9) 理解7)下的注示。

 

好吧,就這麼多吧,我想上面舉得這些例子,已經將rownum 和 row_number 常見用法,以及各自的特徵用法都做了舉例。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

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.