Я пытаюсь сделать что-то вроде:
SELECT * FROM table LIMIT 10,20
или
SELECT * FROM table LIMIT 10 OFFSET 10
но с использованием SQL Server
Единственное решение, которое я нашел, выглядит излишним:
SELECT * FROM (
SELECT *, ROW_NUMBER() OVER (ORDER BY name) as row FROM sys.databases
) a WHERE row > 5 and row <= 10
Я также нашел :
SELECT TOP 10 * FROM stuff;
... но это не то, что я хочу сделать, так как я не могу указать начальный лимит.
Есть ли другой способ для меня сделать это?
Кроме того, просто любопытно, есть ли причина, почему SQL Server не поддерживает LIMIT
функцию или что-то подобное? Я не хочу быть злым, но это действительно похоже на то, что нужно СУБД. Я работаю с MySQL и SQL + в течение последних 5 лет, так что ...
ROW_NUMBER()
и ограничениеTOP
ширины диапазона иWHERE
условия для границы диапазона - лучшее, чего я смог достичь. Я также заметил гораздо лучшую производительность, если вTOP
предложении вместо литерала используется литерал