Estou tentando fazer algo como:
SELECT * FROM table LIMIT 10,20
ou
SELECT * FROM table LIMIT 10 OFFSET 10
mas usando o SQL Server
A única solução que encontrei parece exagerada:
SELECT * FROM (
SELECT *, ROW_NUMBER() OVER (ORDER BY name) as row FROM sys.databases
) a WHERE row > 5 and row <= 10
Eu também encontrei :
SELECT TOP 10 * FROM stuff;
... mas não é o que eu quero fazer, pois não posso especificar o limite inicial.
Existe outra maneira de fazer isso?
Além disso, apenas curioso, existe uma razão pela qual o SQL Server não suporta a LIMIT
função ou algo semelhante? Eu não quero ser mau, mas isso realmente soa como algo que um SGBD precisa ... Se isso acontecer, sinto muito por ser tão ignorante! Eu tenho trabalhado com MySQL e SQL + nos últimos 5 anos, então ...
ROW_NUMBER()
e limitar comTOP
a largura do intervalo e umaWHERE
condição para um limite do intervalo é o melhor que consegui alcançar. Eu também notei um desempenho muito melhor se aTOP
cláusula usa um literal em vez de variável