2012年2月3日星期五

在Oracle上限制SELECT的結果列數

在MySQL上,我們可以使用

SELECT student_number, name, class FROM student ORDER BY enrollment_year DESC LIMIT 10, 20;

這樣就可把學生依入學年份排序,並只列出首第11至20個的結果。

Oracle沒有LIMIT,在Oracle上要怎樣做到呢?這問題經常有人在問。

其實我們以用subquery加上ROWNUM的小技巧去做到。

SELECT * FROM (SELECT student_number, name, class FROM student WHERE enrollment_year>2010) WHERE ROWNUM BETWEEN 11 AND 20;

這樣,結果就會例出排序後第11至20個結果。大家亦可以把WHERE clause上改為︰

ROWNUM>10 AND ROWNUM<=20

全句︰

SELECT * FROM (SELECT student_number, name, class FROM student WHERE enrollment_year>2010) WHERE ROWNUM>10 AND ROWNUM<=20;

結果也是一樣的。

沒有留言:

發佈留言