Ho questa query SQL:Come sapere se il server SQL sta tagliando il risultato se si utilizza TOP?
SELECT TOP 10 * FROM MyTable
Come faccio a sapere se i risultati sono stati tagliati corti, vale a dire MyTable in realtà ha più di 10 righe?
Ho questa query SQL:Come sapere se il server SQL sta tagliando il risultato se si utilizza TOP?
SELECT TOP 10 * FROM MyTable
Come faccio a sapere se i risultati sono stati tagliati corti, vale a dire MyTable in realtà ha più di 10 righe?
È possibile utilizzare COUNT
per ottenere il numero totale di righe.
SELECT COUNT(*)
FROM MyTable
È possibile verificare se il risultato è maggiore di 10 per determinare se ha più di 10 righe.
È possibile restituire il numero totale di righe utilizzando count(*)
come colonna aggiuntiva.
Qualcosa di simile a questo:
select top 10 T1.*, T2.Total
from MyTable as T1
outer apply (select count(*) as Total from MyTable) as T2
Il modo più semplice è quello di aggiungere una colonna COUNT..OVER che restituisce le righe totali nella tabella nella stessa query:
SELECT TOP 10 *, COUNT(*) OVER() As TotalRows FROM MyTable
Questo totale è calcolato dopo le clausole FROM e WHERE vengono eseguite, ma prima dello viene applicata la clausola TOP.
Accidenti. perso per 2 secondi ... upvoted. –
Tuttavia, penso che vorrei anche sottolineare il fatto che selezionare x top records senza una clausola order by non ha senso. –
@ZoharPeled Concordato. – RBarryYoung
frode:
SELECT TOP 11 * FROM MyTable
e verificare se ci sono 11 righe :-) Poi ignorare undicesima fila. Nota che da un commento che hai scritto, forse non hai capito: fai questa query invece della query TOP 10
.
Se ci sono < = 10 righe, l'intero gruppo di risultati sarebbe stato restituito da TOP 10
. Se ci sono 11 righe, allora un TOP 10
chiaramente non sarebbe stato sufficiente.
p.s. La ragione per cui sono interessato a questo è che se ci sono più risultati, voglio registrare il fatto che il set di risultati è stato interrotto. Se non aggiungo alcun limite, il set di risultati potrebbe essere enorme, il che significherebbe il blocco del server SQL. – Contango
Fai TOP 11 e vedrai. – jarlh
Query superiore 11 e utilizza solo 10 righe –