/ / LIMIT funzionalità di stile in MS SQL Server 2005 - mysql, sql, sql-server

LIMIT funzionalità di stile in MS SQL Server 2005 - mysql, sql, sql-server

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 № 1

L'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