Sto cercando di fare qualcosa del tipo:
SELECT * FROM table LIMIT 10,20
o
SELECT * FROM table LIMIT 10 OFFSET 10
ma utilizzando SQL Server
L'unica soluzione che ho trovato sembra eccessiva:
SELECT * FROM (
SELECT *, ROW_NUMBER() OVER (ORDER BY name) as row FROM sys.databases
) a WHERE row > 5 and row <= 10
Ho anche trovato :
SELECT TOP 10 * FROM stuff;
... ma non è quello che voglio fare poiché non riesco a specificare il limite iniziale.
C'è un altro modo per farlo?
Inoltre, solo curioso, c'è un motivo per cui SQL Server non supporta la LIMIT
funzione o qualcosa di simile? Non voglio essere cattivo, ma sembra davvero qualcosa di cui un DBMS ha bisogno ... Se lo fa, allora mi dispiace di essere così ignorante! Ho lavorato con MySQL e SQL + negli ultimi 5 anni, quindi ...
ROW_NUMBER()
e la limitazione conTOP
per l'ampiezza dell'intervallo e unaWHERE
condizione per un limite dell'intervallo è il migliore che sono riuscito a raggiungere. Ho anche notato prestazioni molto migliori se laTOP
clausola utilizza un valore letterale anziché variabile