Я намагаюся зробити щось на кшталт:
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
застосуванні використовується буквальний замість змінної