Próbuję zrobić coś takiego:
SELECT * FROM table LIMIT 10,20
lub
SELECT * FROM table LIMIT 10 OFFSET 10
ale używając SQL Server
Jedyne rozwiązanie, które znalazłem, wygląda na przesadę:
SELECT * FROM (
SELECT *, ROW_NUMBER() OVER (ORDER BY name) as row FROM sys.databases
) a WHERE row > 5 and row <= 10
Ja również znaleźć :
SELECT TOP 10 * FROM stuff;
... ale to nie jest to, co chcę robić, ponieważ nie mogę określić limitu początkowego.
Czy mogę to zrobić w inny sposób?
Ciekawe, czy istnieje powód, dla którego SQL Server nie obsługuje tej LIMITfunkcji lub czegoś podobnego? Nie chcę być podły, ale to naprawdę brzmi jak coś, czego potrzebuje DBMS ... Jeśli tak, to przepraszam za taką ignorancję! Pracuję z MySQL i SQL + od 5 lat, więc ...
ROW_NUMBER()i ograniczanieTOPszerokości zakresu iWHEREwarunku ograniczenia zakresu jest najlepsze, jakie udało mi się osiągnąć. Zauważyłem również znacznie lepszą wydajność, jeśliTOPklauzula używa literału zamiast zmiennej