Estoy tratando de hacer algo como:
SELECT * FROM table LIMIT 10,20
o
SELECT * FROM table LIMIT 10 OFFSET 10
pero usando SQL Server
La única solución que encontré parece exagerada:
SELECT * FROM (
SELECT *, ROW_NUMBER() OVER (ORDER BY name) as row FROM sys.databases
) a WHERE row > 5 and row <= 10
También encontré :
SELECT TOP 10 * FROM stuff;
... pero no es lo que quiero hacer, ya que no puedo especificar el límite inicial.
¿Hay otra forma de hacer eso?
Además, por curiosidad, ¿hay alguna razón por la que SQL Server no admite la LIMIT
función o algo similar? No quiero ser malo, pero eso realmente suena como algo que un DBMS necesita ... Si lo hace, ¡lo siento por ser tan ignorante! He estado trabajando con MySQL y SQL + durante los últimos 5 años, así que ...
ROW_NUMBER()
y limitarTOP
el ancho del rango y unaWHERE
condición para un límite del rango. También he notado un rendimiento mucho mejor si laTOP
cláusula usa un literal en lugar de una variable