Хорошо, я работаю над переносом запроса базы данных oracle DB на postgres.Мой запрос должен дать мне пронумерованные записи и нумерацию страниц.
Рассмотрим следующий код оракула:
select * from (
select RS.*, ROWNUM as RN from (
select * from STUDENTS order by GRADES
) RS where ROWNUM <= (#{startIndex} + #{pageSize})
) where RN > #{startIndex}
Обратите внимание, что здесь есть 2 варианта использования ROWNUM
:
- Чтобы указать номер строки для каждой строки в результате запроса.
- Для разбивки на страницы.
Мне нужно перенести такой запрос на postgres .
Я знаю, как разбивать на страницы, используя команды LIMIT
и OFFSET
для разбивки на страницы, но я не могу предоставить глобальный номер строки (каждая строка в результате запроса получает уникальный номер строки).
С другой стороны, мне удалось найти команду ROW_NUMBER()
, которая может предоставить мне глобальные номера строк, но она не рекомендуется для целей нумерации страниц, поскольку число кортежей в моей БД очень большое.
Как написать аналогичный код в postgres?