Как именно работает этот постраничный запрос выбора?
Я довольно новый в Microsoft SQL Server, и я не так в БД.
У меня есть сомнения, связанные с этим запросом (который выполняется внутри кода веб-приложения, над которым я работаю):
SELECT * FROM VulnerabilityAlertDocument WHERE (1=1) ORDER BY Published DESC OFFSET 0 ROWS FETCH NEXT 10 ROWS ONLY;
Из того, что я понимаю, мне возвращаются все поля из 10 строк в моей таблице (упорядоченные по убыванию в соответствии со значением значения столбца "Опубликованные").
Так что в моем веб-приложении оно используется для получения постраничного представления.
Например, у меня есть представление, которое показывает мне таблицу, которая в начале содержит первые 10 записей, затем я могу нажать на кнопку "Далее", запрос выполняется снова, и я показываю записи в диапазоне от 11 до 20 и т. Д. снова...
Я сомневаюсь: почему, если я выполняю этот запрос в Microsoft SQL Manager Stusio в первый раз, я получаю первые 10 записей, но если я пытаюсь выполнить его снова, я не получаю записи между 10 и 20, но я получаю снова первые 10 записи?
1 ответ
Вы можете найти очень хорошую документацию по синтаксису SQL Server на MSDN: http://technet.microsoft.com/en-us/library/gg699618.aspx
Короче, OFFSET 0 ROWS
означает начинать со строки 0, если вы установите смещение на 10, вы получите следующий набор из 10 строк:
SELECT * FROM VulnerabilityAlertDocument WHERE (1=1) ORDER BY Published DESC OFFSET 10 ROWS FETCH NEXT 10 ROWS ONLY;
SQL Server не отслеживает, какие строки вы уже запрашивали, это ваше дело.