Подтвердить что ты не робот

Альтернативы LIMIT и OFFSET для подкачки в Oracle

Я разрабатываю веб-приложение и нуждаюсь в результатах, упорядоченных по страницам. Я нормально использую LIMIT/OFFSET для этой цели.

Каков наилучший способ публикации результатов в Oracle? Я видел несколько образцов, используя rownum и подзапросы. Это так? Не могли бы вы дать мне образец для перевода этого SQL в Oracle:

SELECT fieldA,fieldB 
FROM table 
ORDER BY fieldA 
OFFSET 5 LIMIT 14

(Я использую Oracle 10g, для чего это стоит)

Спасибо!


Ответ: Используя ссылку, представленную ниже karim79, этот SQL будет выглядеть так:

SELECT * FROM (
    SELECT rownum rnum, a.* 
    FROM(
        SELECT fieldA,fieldB 
        FROM table 
        ORDER BY fieldA 
    ) a 
    WHERE rownum <=5+14
)
WHERE rnum >=5
4b9b3361

Ответ 2

Поскольку вы на 10g, вы должны иметь возможность упростить подход ROWNUM с использованием аналитических функций

SELECT fieldA, 
       fieldB
  FROM (SELECT fieldA,
               fieldB,
               row_number() over (order by fieldA) rnk
          FROM table_name)
 WHERE rnk BETWEEN 5 AND 14;