Ваше решение не будет работать (как правильно указал Боб), но вы можете использовать row_number()
, чтобы делать то, что вы хотите:
SELECT col1,
col2
FROM (
SELECT col1,
col2,
row_number() over (order by some_column) as rn
FROM your_table
) t
WHERE rn BETWEEN 10 AND 20
Обратите внимание, что это решение имеет дополнительное преимущество, которое вы можете заказатьконечный результат по другим критериям, если вы хотите.
Редактировать: забыл ответить на ваш первоначальный вопрос:
С вышеупомянутым решением, да Oracle придется построить полный результат, чтобы найтиправильная нумерация