Как получить N записей в запросе со смещением для постраничного вывода

Когда работаешь с очень большим объемом данных, то может не получится сделать постраничный вывод на стороне клиента и придется дробить запросы на вывод N записей. Ниже пример SQL запроса, который позволит это сделать. Код для MSSQL сервера (Transact-SQL).

В запросе из примера мы получаем 50 записей со смещением еще 50

SELECT [ID], [Field1], [Field2], [Field3], [Field1], [Timestamp]
from [dbo].[TABLENAME]  
WHERE  CAST(TIMESTAMP as date) between '2024-02-01' and '2023-02-01'
order by TIMESTAMP
OFFSET 50 ROWS -- skip 50 rows
FETCH NEXT 50 ROWS ONLY; -- take 50 rows
  • OFFSET 50 ROWS - пропускает 50 записей
  • FETCH NEXT 50 ROWS ONLY - возвращает только 50 записей

Соответственно, для OFFSET нужно указывать номер страницы * количество записей на странице, а FETCH NEXT - это просто константа.


Комментариев нет »

No comments yet.

RSS feed for comments on this post. TrackBack URL

Leave a comment






MarkiMarta.ru. Записки отца-программиста" с 2009 г.
Категория информационной продукции 18+
Яндекс.Метрика