Я получаю из базы данных список товаров, упорядоченных по убыванию.
Я использую функцию ROW_NUMBER()
, чтобы получить 50 на 50 предметов.
В первый раз мне нужно получить предметы от 1-50 до 51-100 и т. Д.
У меня есть в базе данных предметы с типом 1, и это те предметы, которые я получаю.
В базе данных тысячи таких предметов.
Поэтому, когда я в первый раз вызываю хранимую процедуру, я передаю ее номер один (номер, с которого нужно получить следующие 50).
Так что это должно вернуть мне первые 50 предметов. Теперь я добавляю к предложению where RowNum < 1+50
, но номера строк, которые я получаю из запроса: 35,37,38,43,44,45,55,67
и т. Д., Поэтому моя хранимая процедура возвращает только элементы из 35 to 45
.
Я думаю, что сделал несколько глупых ошибок в своем запросе, но не могу его найти.
SELECT *
FROM ( SELECT ROW_NUMBER() OVER ( ORDER BY Products.CreatedOnDate DESC ) AS RowNum, Products.*
FROM Products
WHERE Products.CreatedOnDate <= GETDATE()
) AS RowConstrainedResult
WHERE RowNum >= 1
AND RowNum < 1+50 -- here I use parameter but currently I hardcode '1'
AND ProductTypeId = 1
ORDER BY RowNum