Запрос для постраничного вывода контента

  • Михаил
  • 12 мин. на прочтение
  • 99
  • 20 Jun 2022
  • 20 Jun 2022

Получаем первые 10 записей, а точнее последние созданные.


WITH num_row
AS
(SELECT row_number() OVER (ORDER BY _id DESC) as nom , * FROM [news] WHERE _status='public')
SELECT * FROM num_row WHERE nom BETWEEN (10 - 9) AND 10

-- и так дальше 20, 30, 40 .. до последней страницы.

Получаем первую станицу из 10 записей



И проверяем получение последней 50 станицы



Как видим, она состоит из 6 записей, а всего записей 496.


Последнюю страницу (количество страниц) можно определить запросом вида

SELECT CEILING(CAST(COUNT(*) as FLOAT)/10), COUNT(*) FROM [news] WHERE _status='public'