J'essaye de faire quelque chose comme:
SELECT * FROM table LIMIT 10,20
ou
SELECT * FROM table LIMIT 10 OFFSET 10
mais en utilisant SQL Server
La seule solution que j'ai trouvée semble exagérée:
SELECT * FROM (
SELECT *, ROW_NUMBER() OVER (ORDER BY name) as row FROM sys.databases
) a WHERE row > 5 and row <= 10
J'ai aussi trouvé :
SELECT TOP 10 * FROM stuff;
... mais ce n'est pas ce que je veux faire car je ne peux pas spécifier la limite de départ.
Y a-t-il une autre façon pour moi de faire ça?
Aussi, juste curieux, y a-t-il une raison pour laquelle SQL Server ne prend pas en charge la LIMIT
fonction ou quelque chose de similaire? Je ne veux pas être méchant, mais cela ressemble vraiment à quelque chose dont un SGBD a besoin ... Si c'est le cas, je suis désolé d'être si ignorant! Je travaille avec MySQL et SQL + depuis 5 ans donc ...
ROW_NUMBER()
et limiter avecTOP
pour la largeur de la plage et uneWHERE
condition pour une limite de la plage est le meilleur que j'ai pu réaliser. J'ai également remarqué de bien meilleures performances si laTOP
clause utilise un littéral au lieu d'une variable