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 LIMIT
funkcji 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 ograniczanieTOP
szerokości zakresu iWHERE
warunku ograniczenia zakresu jest najlepsze, jakie udało mi się osiągnąć. Zauważyłem również znacznie lepszą wydajność, jeśliTOP
klauzula używa literału zamiast zmiennej