>>>>> "Bill" == Bill OConnor <[EMAIL PROTECTED]> writes:

Bill> I want to use a subset of the selected rows on a webpage.  For
Bill> instance if the query returns 100 rows I want show just 10 of
Bill> them on the page, 11-20 on the next etc.

>>>>> "Tony" == Tony Foiani <[EMAIL PROTECTED]> writes:

Tony> Look at the discussion of the ROWNUM pseudo-column, in the
Tony> Oracle SQL reference.

Someone sent me some private e-mail on this topic, and I thought the
list would be interested in seeing my response.

> ROWNUM is useless if you have an ORDER BY clause. 

Incorrect.  Just use the "ORDER BY" on a sub-SELECT, then grab the
range of rows you want in the outer SELECTs.  This is exactly what the
documentation [1] tells you to do.  So, a top-10 query would be:

| SELECT *
|   FROM ( SELECT * FROM my_table ORDER BY my_col )
|   WHERE ROWNUM <= 10;

While grabbing the next 10 is a bit harder; I would probably just grab
all of them out to the end, and only show the last 10 (possibly adding
ROWNUM as a SELECTed column, so I could trivially match on it).

If you know all the columns, you could do it all in SQL again:

| SELECT col1, col2, col3
|   FROM ( SELECT ROWNUM AS row_num, col1, col2, col3
|            FROM ( SELECT col1, col2, col3 FROM my_table ORDER BY col1 )
|            WHERE ROWNUM <= 20 )
|   WHERE row_num >= 11;

> I think Mr. Howard's sollution [SELECT TOP n] will work.

In Oracle?  I doubt it.  TOP isn't even a reserved word!

t.

[1] Oracle 8i SQL Reference, Release 2 (8.1.6), A76989-01; Chapter 2
    Basic Elements of Oracle SQL, Section Pseudocolumns


Reply via email to