选择表中的给定行

时间:2010-03-10 18:40:52

标签: sql oracle

这是一个简单的问题。我有一个500行的表,以及能够选择给定行号n的内容。这就是我在做的事情:

    select *
    from table
    where table.arg1 ='A'
    and time_stamp=to_date('1/8/2010','MM/DD/YYYY')
    and rownum = n

但它只适用于第1行,其余部分不返回任何内容。有什么想法吗?

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