Ho visto alcuni modi davvero orribili per fare qualcosa come la funzione LIMIT di MySQL per MS SQL.
Qualcuno può suggerire un modo elegante per fare qualcosa del genere:
SELECT * FROM blah LIMIT 5,15;
ma in MS SQL?
Saluti!
risposte:
4 per risposta № 1L'equivalente di SQL Server alla sintassi LIMIT di MySQL / PostgreSQL è TOP (SQL Server 2000+), ma TOP non supporta il valore di offset...
Supponendo SQL Server 2005+, utilizzare:
SELECT x.*
FROM (SELECT t.*,
ROW_NUMBER() OVER (ORDER BY ?) AS rank
FROM BLAH t) x
WHERE x.rank BETWEEN 6 AND 20
Ricorda che devi definire un ordinamento per la classifica - sostituire "?" con le colonne appropriate.
2 per risposta № 2
Uno dei modi per ottenere lo stesso in SQL Server per LIMIT 5,15
sarebbe da usare ROW_NUMBER()
-
With t As
(
Select ...
, ROW_NUMBER() OVER ( Order By ... ) As Num
From Table
)
Select ...
From t
Where Num Between 5 And 15