He leído un poco sobre ROWCOUNT pero no es exactamente lo que estoy buscando. desde mi entendimiento rowcount indica el número de filas afectadas DESPUÉS de ejecutar la consulta. lo que estoy buscando es saber ANTES de ejecutar la consulta. ¿es posible?cómo saber cuántas filas se verán afectadas antes de ejecutar una consulta en microsoft sql server 2008
Respuesta
respuesta corta es no ..
No se puede obtener el número de filas antes de ejecutar el query..atleast en el servidor SQL.
La mejor manera de hacerlo es utilizar
Select count(*) from <table> where <condtion>
luego ejecutar su consulta real
[delete]or [update] [set col='val']
from <table> where <condtion>
Aunque puede usar las funciones de SQL Server Analytical para obtener el número total de filas que se están efectuando. Pero esto es solo en tiempo de ejecución. – rvphx
no siempre será correcto ya que la actualización omitirá las filas donde no es necesario cambiar nada. por ejemplo: el nuevo valor y el valor anterior ya son iguales. –
@HimanshuSaini: Hasta donde sé, SQL Server no comprobará si los valores antiguos y nuevos son los mismos, antes de actualizar. Simplemente actualiza todos los registros con condiciones coincidentes. Por favor, comparta si tiene algún documento al respecto. Eso sería un nuevo aprendizaje para mí –
La solución más simple es reemplazar las columnas en el SELECT * FROM...
con SELECT Count(*) FROM ...
y el resto de su consulta (la cláusula WHERE
debe ser la misma) antes de ejecutarlo. Esto le dirá cuántas filas se verán afectados
El plan de ejecución estimado se va a dar filas afectadas, basada en las estadísticas, por lo que ganó' Realmente te ayudo en este caso.
Lo que yo recomendaría es copiar su UPDATE statement
o DELETE statement
y convertirlo en SELECT
. Ejecuta eso para ver cuántas filas vuelven y tienes la respuesta a cuántas filas se habrán actualizado o eliminado.
Ej:
UPDATE t
SET t.Value = 'Something'
FROM MyTable t
WHERE t.OtherValue = 'Something Else'
se convierte en:
SELECT COUNT(*)
FROM MyTable t
WHERE t.OtherValue = 'Something Else'
También puede utilizar BEGIN TRANSACTION antes de ejecutarse la operación. Puede ver el número de filas afectadas. Desde allí, COMPROMETE los resultados o usa ROLLBACK para devolver los datos al estado original.
iniciar la transacción
Actualizar tabla conjunto col = 'algo' donde col2 = 'otra cosa';
Commit/Rollback
- 1. cuenta el número de filas que se verán afectadas antes de la actualización en el desencadenante
- 2. Obteniendo no. de filas afectadas después de ejecutar consulta de selección en SQL Server 2005
- 3. Número de filas afectadas por una ACTUALIZACIÓN en PL/SQL
- 4. Microsoft SQL Server 2008 - Fechas
- 5. ¿Cómo ejecutar un archivo SQL de 3GB (Microsoft SQL Server)?
- 6. SQL Server 2008 consulta de tabla cruzada
- 7. seleccionar las filas afectadas por una actualización
- 8. Consulta de SQL Server 2008 para buscar filas que contengan caracteres no alfanuméricos en una columna
- 9. MySQL consulta UPDATE devuelve "0 filas afectadas"
- 10. Obtener filas afectadas en ExecuteNonQuery
- 11. Autoincrement de índice para Microsoft SQL Server 2008 R2
- 12. SQL Server 2005: Insertar varias filas con una sola consulta
- 13. iterar a través de filas en SQL Server 2008
- 14. Cómo obtener el número de filas afectadas, al ejecutar la consulta MySQL desde bash?
- 15. Volviendo varias filas de la columna XML consulta en SQL Server 2008
- 16. ¿Cómo puedo "probar" una consulta SQL que modifica los datos, es decir, ver la salida antes de confirmar en el servidor sql 2008?
- 17. Zend Framework 2 Microsoft SQL Server 2008 conexión DB
- 18. Sql Server 2008 Sintonización de grandes transacciones (700k + filas/transacción)
- 19. ¿Cuántas filas puede contener una tabla SQLite antes de que las consultas se conviertan en tiempo?
- 20. ¿Cómo comparar una consulta SQL Server?
- 21. Función de servidor para ejecutar trabajos del Agente SQL Server en SQL SERVER 2008
- 22. ¿Qué cerraduras se adquieren en una consulta en SQL Server?
- 23. Linking Server en SQL Server 2008 R2
- 24. aislamiento de una subcadena en una cadena antes de un símbolo en SQL Server 2008
- 25. SQL Server Linked Server consulta que se queda sin memoria
- 26. Cómo reconstruir vista en SQL Server 2008
- 27. número de filas SQL Server
- 28. Microsoft SQL Server: ¿alguna forma de saber cuándo se creó un registro?
- 29. Servidor Sql imprimir filas afectadas durante el ciclo while
- 30. Número de filas afectadas Zend DB (UPDATE)
No, no es posible sin hacer dos consultas. ¿Por qué necesitas hacer esto sin embargo? Dependiendo del motivo de la solicitud, tal vez pueda hacer la verificación de consulta '@@ ROWCOUNT' y luego confirmar si es como se esperaba. O use 'COUNT (*) OVER()' para devolver el recuento de filas con la consulta. –