2014年4月16日 星期三

[SQL]如何在OracleSQL中實現top的功能

最近在用Oracle SQL才發現原來Oracle SQL沒有top這個功能

一般在SQL Server或是MySQL中都有top的指令讓使用者挑出前n筆資料

像是這樣
select top 10 * from test

表示從test這個table挑出前十筆資料

連AS400都有這個功能top這個功能沒想到Oracle SQL居然沒有?

不過這也不是什麼問題當然還是有解決方式

在Oracle SQL要這樣寫
select * from test where rownum<=10
這樣會列出最前面的十筆 如果需要排序後的結果再取前十筆要這樣寫 例如要以id的欄位來排序
select * from (select * from test order by id desc) where rownum<=10

因為rownum在Oracle SQL執行的順序會早於 order by或group by

所以要以排序完的結果再取前十筆才會正確顯示

沒有留言:

張貼留言