这是一个简单的问题。我有一个500行的表,以及能够选择给定行号n的内容。这就是我在做的事情:
select *
from table
where table.arg1 ='A'
and time_stamp=to_date('1/8/2010','MM/DD/YYYY')
and rownum = n
但它只适用于第1行,其余部分不返回任何内容。有什么想法吗?
答案 0 :(得分:4)
where rownum = 3
返回空行集的原因是第一行的条件不为真。对于第二行,结果集中仍然没有第一行,rownum
仍为1
。所以情况再次失败。有关更详细的说明,请参阅this page。
您可以在子查询中使用row_number()
:
select *
from (
select row_number() over (order by col1) as rn, yt.*
from YourTable yt
) sub
where rn = 3
甚至更简单,但可能更令人困惑,使用rownum
本身:
select *
from (
select rownum as rn, yt.*
from YourTable yt
) sub
where rn = 3