Изменение, которое вам нужно внести в свой код:
SELECT TOP (@range) *
FROM client
WHERE clientId NOT IN (SELECT TOP (@limit) clientId /*<-- NOT "*" here */
FROM client
ORDER BY clientId)
ORDER BY clientId
Это также можно сделать с помощью row_number
, как показано ниже (что работает лучше, зависит от различных доступных индексов и ширины индекса покрытияв целом запрос сравнивается с узким только на clientId
.)
DECLARE @lowerlimit int
SET @lowerlimit = @range +@limit;
WITH cte As
(
SELECT TOP (@lowerlimit) * , ROW_NUMBER() OVER (ORDER BY clientId) AS RN
FROM client
ORDER BY clientId
)
SELECT * /*TODO: Your Actual column list*/
FROM cte
WHERE RN >= @limit