Limitazione di set di risultati tramite le clausole TOP e PERCENT
È possibile utilizzare la clausola TOP per limitare il numero di righe restituite nel set di risultati.
TOP ( expression ) [ PERCENT ] [ WITH TIES ]
expression è un'espressione numerica che specifica il numero di righe da restituire oppure, se viene specificata la clausola PERCENT, expression indica la percentuale di righe del set di risultati restituite. Ad esempio:
TOP (120) /*Return the top 120 rows of the result set. */
TOP (15) PERCENT /* Return the top 15 percent of the result set. */.
TOP(@n) /* Return the top @n rows of the result set, with the variable declaration: DECLARE @n AS BIGINT; SET @n = 2 */.
Se in un'istruzione SELECT che include la clausola TOP si specifica la clausola ORDER BY, le righe da restituire vengono selezionate nel set di risultati ordinato. L'intero set di risultati viene creato nell'ordine specificato e vengono restituite le prime n righe del set di risultati ordinato. Se viene specificata anche la clausola WITH TIES, vengono restituite tutte le righe contenenti l'ultimo valore restituito da ORDER BY, anche se in questo modo viene superato il numero specificato da expression.
TOP e SET ROWCOUNT
Per limitare le dimensioni di un set di risultati, è inoltre possibile eseguire un'istruzione SET ROWCOUNT n prima di eseguire l'istruzione desiderata. Le differenze tra SET ROWCOUNT e TOP sono le seguenti:
- Il limite definito dall'istruzione SET ROWCOUNT viene applicato in fase di creazione delle righe del set di risultati dopo la valutazione della clausola ORDER BY. Quando si specifica ORDER BY, l'istruzione SELECT viene interrotta dopo che sono state selezionate n righe da un gruppo di valori ordinato in base alla classificazione ORDER BY specificata.
- La clausola TOP viene applicata solo all'istruzione SELECT in cui è stata specificata, mentre SET ROWCOUNT rimane valida fino all'esecuzione di un'altra istruzione SET ROWCOUNT, ad esempio SET ROWCOUNT 0 per disattivare l'opzione.
Importante: L'utilizzo di SET ROWCOUNT non avrà effetti sulle istruzioni DELETE, INSERT e UPDATE nella prossima versione di SQL Server. Evitare di utilizzare l'opzione SET ROWCOUNT con le istruzioni DELETE, INSERT e UPDATE in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata. È inoltre consigliabile riscrivere le istruzioni DELETE, INSERT e UPDATE che attualmente utilizzano SET ROWCOUNT, per fare in modo che utilizzino TOP.
Vedere anche
Altre risorse
TOP (Transact-SQL)
SELECT (Transact-SQL)
SET ROWCOUNT (Transact-SQL)