oracle使用rownum跟排序的衝突問題解決

2021-05-28 13:07:38 字數 385 閱讀 4151

「select * from tabname where rownum<20 order by name" 但卻發現oracle卻不能按自己的意願來執行,而是先隨便取20條記錄,然後再order by,後經諮詢oracle,說rownum確實就這樣,想用的話,只能用子查詢來實現先排序,後rownum,方法如下: 

"select * from (select * from tabname order by name) where rownum<20",但這樣一來,效率會低很多。 

後經筆者試驗,只需在order

by 的字段上加主鍵或索引

即可讓oracle先按該字段排序,然後再rownum

Oracle中rownum的使用

首先,我們需要了解一下rownum的定義 rownum 是對結果集的編序排列,始終是從1開始。實際上rownum並不是乙個實際存在的列,所以我們平時對列進行的操作無法完全套用到上面。注意 rownum的查詢只能從1開始!在做乙個專案時遇到了rownum的問題。當時是需要獲取一張表中的資料,支援排序和...

Oracle中rownum的使用

oracle中的rownum可以使用來取一定區間的資料,在實際應用中常在分頁中使用到,但是在使用中存在的一些問題需要注意.例如 資料庫中存在20條資料。a.select from where rownum 1 b.select from where rownum 2 c.select from wh...

Oracle中rownum使用方式

對於rownum來說它是oracle系統順序分配為從查詢返回的行的編號,返回的第一行分配的是1,第二行是2,依此類推,這個偽欄位可以用於限制查詢返回的總行數,且rownum不能以任何表的名稱作為字首。常用的方法都是取rownum小於某個引數的情形 sql select rownum,id,name ...