oracle中排序後查詢前幾條資料

2021-08-15 20:56:43 字數 804 閱讀 7092

sql   server中可以用top關鍵字查詢符合條件的前幾條記錄。(select   top   10   ......)

oracle中沒有top關鍵字,應該怎麼查詢呢?方法如下:

1、sql語句:select   *   from   (select   *    from    table_a   ta  order  by  ta.id)  where   rownum<10;

2、注釋說明:假設表table_a中存在id列,根據id列排序後取前10條資料。本句中用了乙個子查詢,在子查詢中查詢表table_a的全部資料,再根據id排序。之後在查詢出來的這個結果中取前10條資料。

3、引申:這條語句只是乙個簡化形式,說明了這種排序後取符合要求資料的基本形式。具體使用時可以再自行增加內容。例如擴寬子查詢的內容,也可以更改排序的順序(公升序,降序desc),寫rownum=1,取第一條資料等。但是到目前未知,我沒有發現可以不寫子查詢達到這種效果的,下面會寫沒有子查詢時是怎樣的效果。

4、反例:select   *   from   table_a  ta  where   rownum = 1   order  by  ta.id;

像這個語句,目的是查詢根據id排序後的第一條資料(取id值最小的那條記錄)。看似沒問題,實際上是有問題的。sql語句會先執行rownum=1,再執行等order  by語句。到執行order   by語句時,結果已經只有一行了, 排序就沒有意義。而order  by語句必須放在sql的結尾,所以這種寫法是不可行的。 改為rownum<10的時候,也是如此,會按照sql語句查詢出來的預設順序排序(不一定是按照id排序)之後,取前十條資料,再按照id排序。

Oracle中排序後查詢20 40資料

第一種方法 select from select t.rownum tt from select from sup doc feedback order by web doc id t where rownum 41 r where r.tt 20 第二中方法 select from select ...

ORACLE查詢排序後的前幾條資料(避坑)

今天寫乙個頁面,要求是查詢排序後的前五條資料,遇到乙個不大不小的坑,特此記錄下 說明下 sql server中是用top查詢前幾條資料,oracle沒有top,但是可以用rownum實現。我寫的語句是 select from table name t where rownum 5 order by ...

如何查詢oracle表的前幾條記錄

由於專案需要,需要查詢 oracle 表中的前幾條記錄,oralcle 由乙個rownum 可以直接用這個來得到需要的記錄數,但是一開始我用的 sql是 select from table where rownum 你要查的記錄條數,雖然能夠取出前幾條記錄,但是我發現如果要把排序後記錄取前幾條結果就...