ho letto un po 'di ROWCOUNT ma non è esattamente quello che sto cercando. dalla mia comprensione rowcount afferma il numero di righe interessate DOPO che si esegue la query. quello che sto cercando è sapere PRIMA di eseguire la query. È possibile?come sapere quante righe saranno interessate prima di eseguire una query in microsoft sql server 2008
risposta
risposta breve è no ..
Non è possibile ottenere il numero di righe prima di eseguire il query..atleast in SQL Server.
Il modo migliore per farlo è usare
Select count(*) from <table> where <condtion>
quindi eseguire la query attuale
[delete]or [update] [set col='val']
from <table> where <condtion>
Sebbene sia possibile utilizzare le funzioni analitiche di SQL Server per ottenere il numero totale di righe che vengono eseguite. Ma questo è solo in runtime. – rvphx
non sarà sempre corretto in quanto l'aggiornamento salterà le righe dove nulla deve essere cambiato. per esempio: nuovo valore e vecchio valore è già lo stesso. –
@HimanshuSaini: Per quanto ne so, SQL Server non verificherà se i valori vecchi e nuovi sono uguali, prima di aggiornare. Aggiorna solo tutti i record con le condizioni corrispondenti. Si prega di condividere se si dispone di documenti in merito. Sarebbe un nuovo apprendimento per me –
La soluzione più semplice è sostituire le colonne nello SELECT * FROM...
con SELECT Count(*) FROM ...
e il resto della query (la clausola WHERE
deve essere la stessa) prima di eseguirla. Questo vi dirà quante righe saranno interessati
Il piano di esecuzione stimato sta per darvi le righe dipendere da statistiche, quindi ha vinto' ti sto davvero aiutando in questo caso.
Quello che vorrei raccomandare è copiare il tuo UPDATE statement
o DELETE statement
e trasformarlo in un SELECT
. Eseguilo per vedere quante righe tornano e hai la tua risposta a quante righe sarebbero state aggiornate o cancellate.
Esempio:
UPDATE t
SET t.Value = 'Something'
FROM MyTable t
WHERE t.OtherValue = 'Something Else'
diventa:
SELECT COUNT(*)
FROM MyTable t
WHERE t.OtherValue = 'Something Else'
È inoltre possibile utilizzare BEGIN TRANSACTION prima dell'esecuzione dell'operazione. Puoi vedere il numero di righe interessate. Da lì, COMMIT i risultati o usa ROLLBACK per riportare i dati nello stato originale.
iniziare la transazione
Aggiorna tabella insieme col = 'qualcosa' dove col2 = 'qualcos'altro';
Commit/Rollback
- 1. Numero di righe interessate da un UPDATE in PL/SQL
- 2. SQL Sql Server 2008 Cross Tab Query
- 3. bash FreeTDS: esecuzione di query SQL in server Microsoft SQL
- 4. Come eseguire l'impaginazione in SQL Server 2008
- 5. Reset autoincrement in Microsoft SQL Server 2008 R2
- 6. Scorrere le righe in SQL Server 2008
- 7. Righe interessate dall'istruzione UPDATE in RAW plpgsql
- 8. Connessione a SQL Server 2008 utilizzando Microsoft Server Management Studio
- 9. SQL Server 2008: eliminare le righe duplicate
- 10. MySQL Query UPDATE restituisce "0 righe interessate"
- 11. Intermittente query lenta su SQL Server 2008
- 12. Selezionare le ultime righe interessate
- 13. Indice autoincrement per Microsoft SQL Server 2008 R2
- 14. Pensieri di compressione di pagine/righe di SQL Server 2008
- 15. Tipo di dati XML in SQL Server 2008 Query
- 16. Il server Sql stampa le righe interessate durante il ciclo while
- 17. Visualizza dati di una tabella in SQL Server 2008
- 18. seleziona le righe interessate da un aggiornamento
- 19. Come ottenere il numero di righe interessate mentre si esegue la query MySQL da bash?
- 20. Zend Framework 2 Connessione DB Microsoft SQL Server 2008
- 21. Come eseguire un file SQL da 3 GB (Microsoft SQL Server)?
- 22. Inserimento di Microsoft SQL Server dalla query di selezione
- 23. Confronto di temporizzazione in SQL Server 2008
- 24. numero di righe interessate Zend DB (UPDATE)
- 25. Errore di installazione di SQL Server 2008: versioni precedenti di Microsoft Visual Studio 2008
- 26. Come si scrive una query Sql per un intervallo di date e una data specifici utilizzando SQL Server 2008?
- 27. Utilizzando PIVOT in SQL Server 2008
- 28. Come scrivere due query di aggiornamento in una singola stored procedure in SQL Server 2008
- 29. Monitoraggio il progresso di una query SQL in SQL Server
- 30. Come posso eseguire una singola query in SQL Server Management Studio?
No, non è possibile senza fare due query. Perché hai bisogno di fare questo però? A seconda del motivo della richiesta, è possibile eseguire la verifica della query '@@ ROWCOUNT', quindi eseguire il commit se è come previsto. Oppure usa 'COUNT (*) OVER()' per restituire il conteggio delle righe con la query. –