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 你要查的記錄條數,雖然能夠取出前幾條記錄,但是我發現如果要把排序後記錄取前幾條結果就...