Я пытаюсь сделать что-то вроде:
SELECT * FROM table LIMIT 10,20
or
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
вместо переменной используется литерал. - person Jodrell   schedule 04.07.2012