2010-03-10 49 views
0

这里是一个简单的问题。我有一个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

您的代码示例可以帮助,因为我没有得到为什么这不起作用。 – 2010-03-10 18:43:28

+0

我不确定但不是RowIndex用于表中的索引而不是rownum ?.据我所知,这个变量只在SQL Server 2005 – 2010-03-10 18:46:11

+0

CommuSoft喜用,我试过的rowIndex和它说,这是一个无效的标识符 – user235693 2010-03-10 18:50:21

回答

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 
+0

感谢Andomar它完美地工作!那个论坛真的很好! – user235693 2010-03-10 19:03:22

相关问题