程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> db2中的fetch first n rows與oracle中的rownum

db2中的fetch first n rows與oracle中的rownum

編輯:DB2教程

db2中的fetch first n rows與oracle中的rownum     在db2中如果想獲取前n行,只要加上fetch first n rows only 就可以了,但在oracle中沒有fetch,網上很多人說可以用oracle的rownum<=n來替代db2的fetch first n rows only,但這樣的替換,在對結果集需要進行order by之後再獲取前n行時,是不對的。根據我的試驗,rownum的順序好像是和rowid相對應的,而rowid的順序是根據插入表中的數據的順序有關(不知道oracle真正的實現機制是不是這樣,有時間找本oracle的書系統研究一下)。看下面oracle中的實例:  www.2cto.com   SQL>select rownum,id,age,name from loaddata;      ROWNUM ID     AGE NAME      ------- ------ --- ------          1 200001 22   AAA          2 200002 22   BBB          3 200003 22   CCC          4 200004 22 DDD          5 200005 22   EEE          6 200006 22   AAA SQL>select rownum ,id,age,name from loaddata order by name;      ROWNUM ID     AGE NAME      ------- ------ --- ------          1 200001 22   AAA          6 200006 22   AAA          2 200002 22   BBB          3 200003 22   CCC          4 200004 22   DDD          5 200005 22   EEE     所以,要是想排序後在取前幾行,可以用子查詢select rownum ,id,age,name from (select * from loaddata order by name);     但我覺得既然要使用子查詢,與其使用oracle的特定函數rownum,倒還不如使用標准sql的函數row_number() over ()。可以這樣寫select id,age,name from (select row_number() over (order by name) as row_number,id,age,name from loaddata ) where row_number<n; 這樣的話就不用考慮是在db2還是oracle下了,都一樣用

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved