2010-03-10 3 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

Ваш пример кода может помочь, потому что я не получаю почему это не сработает. –

+0

Я не уверен, но не RowIndex используется для индекса в таблице вместо rownum ?. Насколько я знаю, эта переменная используется только в SQL Server 2005 –

+0

Привет CommuSoft, я попробовал RowIndex, и он говорит, что это недопустимый идентификатор – user235693

ответ

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

Смежные вопросы