I m trying to run this query but it returns zero rows. Any clues why?
Select distinct a.id
from table1 a, table b
where ( a.id= b.id or a.id = b.secondid ) and rownum < 200;
But if I run the above query without the ROWNUM clause it finds records:
Select distinct a.id
from table1 a, table b
where ( a.id= b.id or a.id = b.secondid );
I'm confused why the first query is not working.
Please use the thread below. Pretty good explanations.
https://community.oracle.com/thread/210143
Here are two working solutions.
- Use the row_number function for 8i and 9i :
ROW_NUMBER() OVER (ORDER BY ASC) AS ROW_NUMBER.
- Reuse Rownum pseudo column (This seems to be better)
SELECT *
FROM (
SELECT t.*, ROWNUM AS rn
FROM (
SELECT *
FROM mytable
ORDER BY
paginator, id
) t
)
WHERE rn BETWEEN 1 AND 3
You need to apply ROWNUM
after Oracle figures out which rows to return. The only reliable way is this:
SELECT * FROM (
Select distinct a.id
from table1 a, table b
where ( a.id= b.id or a.id = b.secondid )
) WHERE ROWNUM < 200;
Change "and rownum < 200" to "WHERE rownum < 200"