Quiero actualizar las 100 mejores registros en SQL Server. Tengo una tabla con los campos T1
F1
y F2
. T1
tiene 200 registros. Quiero actualizar el campo F1
en los 100 registros principales. ¿Cómo puedo actualizar basado en TOP 100
en SQL Server?cómo puedo actualizaciones Top 100 registros en el servidor SQL
Respuesta
Nota, se requieren los paréntesis para UPDATE:
update top (100) table1 set field1 = 1
Cualquier idea de cómo utilizar el 'orden por' también? –
@JoePhilllips Utilice la respuesta Martin Smith por fin por – jjxtra
Sin embargo, estos no son los 100 mejores discos, sino simplemente 100 registros elegidos arbitrariamente. Los 100 mejores incluirían algún orden para clasificar los registros. –
update tb set f1=1 where id in (select top 100 id from tb where f1=0)
El uso de esta construcción es muy lento ... – Lu4
Sin un ORDER BY
toda la idea de TOP
no tiene mucho sentido. Debe tener una definición coherente de qué dirección está "arriba" y cuál es "abajo" para que el concepto de arriba sea significativo.
No obstante SQL Server permite, pero doesn't guarantee a deterministic result.
La sintaxis UPDATE TOP
en la respuesta aceptada no admite una cláusula ORDER BY
pero es posible conseguir la semántica deterministas aquí mediante el uso de un CET o tabla derivada para definir el orden de clasificación deseada de la siguiente manera.
;WITH CTE AS
(
SELECT TOP 100 *
FROM T1
ORDER BY F2
)
UPDATE CTE SET F1='foo'
Motivo del voto a favor? 'TOP' sin' ORDER BY' ** no tiene sentido. Usted acaba de obtener un indefinido '100' filas. –
sentido como en el de no utilizar ningún mundo real – Rohit
Usted dice que carece de sentido, pero eso no es cierto.Reconozco que,/por lo general /, cuando usa las probabilidades 'TOP', debe usarlo con 'ORDER BY' porque lo que le interesa es como el "más" o el "menos" de algo. En otros casos, sin embargo, es posible que solo le interese obtener un registro coincidente. Me gusta hoy! Necesitaba arreglar problemas de datos (ciclos) de a uno por vez. Todo el proceso de reparación implicó un script db, alguna intervención del usuario y algunas operaciones de aplicación. No nos importó QUÉ registro se manejó primero. Nos importó que los estuviéramos manejando uno a la vez. – MetaFight
para aquellos como yo todavía pegado con SQL Server 2000, SET ROWCOUNT {number};
se puede utilizar antes de la UPDATE
consulta
SET ROWCOUNT 100;
UPDATE Table SET ..;
SET ROWCOUNT 0;
limitará la actualización de 100 filas
Se ha desaprobado por lo menos desde SQL 2005, pero a partir de SQL 2012 todavía funciona. EDIT: se mató en SQL 2014. El uso de SET ROWCOUNT no afectará DELETE, INSERT y UPDATE en SQL Server 2014 y versiones posteriores.
SET ROWCOUNT afecta a los desencadenantes y al comando que se está actualizando. Si tiene el conjunto de eliminación en cascada, puede fallar la transacción si hay más filas que filas de filas secundarias en la tabla secundaria. – EricI
Dicho esto, SET ROWCOUNT @RowCountParameter; es una sintaxis válida, mientras que SELECT TOP @RowCountParamter * FROM TableName no es válido. Si necesita configurar las filas que se actualizan, SET ROWCOUNT # es actualmente la mejor opción, siempre que no tenga habilitadas las tablas secundarias con eliminación en cascada. – EricI
Lo que es aún más genial es el hecho de que puede usar una función en línea con valores de tabla para seleccionar cuál (y cuántas a través de TOP
) fila (s) actualizar. Es decir:
UPDATE MyTable
SET [email protected]
FROM tvfSelectLatestRowOfMyTableMatchingCriteria(@Param1,@Param2,@Param3)
Para la función con valores de tabla que tienen algo interesante para seleccionar la fila para actualizar como:
CREATE FUNCTION tvfSelectLatestRowOfMyTableMatchingCriteria
(
@Param1 INT,
@Param2 INT,
@Param3 INT
)
RETURNS TABLE AS RETURN
(
SELECT TOP(1) MyTable.*
FROM MyTable
JOIN MyOtherTable
ON ...
JOIN WhoKnowsWhatElse
ON ...
WHERE [email protected] AND ...
ORDER BY MyTable.SomeDate DESC
)
..., y ahí está (en mi humilde opinión) de la potencia activa de actualizar solo las filas seleccionadas superiores de forma determinista, mientras que al mismo tiempo simplifica la sintaxis de la declaración UPDATE
.
- 1. SQl Eliminar top 100 de la tabla
- 2. SQL SELECT TOP registros frecuentes
- 3. ¿Cómo mantener el historial de actualizaciones de registros en MySQL?
- 4. ¿Cómo puedo introspectar en un servidor SQL?
- 5. SQL SELECT DISTINCT Top 2
- 6. Equivalentes a SQL Server TOP
- 7. ¿Cómo puedo actualizar las 100 filas en DB2
- 8. Sql Server TOP - used?
- 9. ¿Cómo puedo seleccionar los primeros 100 caracteres en SQL Server?
- 10. SQL: ¿Cómo uso el parámetro TOP como en SELECT TOP @amount?
- 11. Cómo escribir la consulta de linq para que coincida con SQL, como seleccionar top 100 * de la pestaña?
- 12. ¿Cómo puedo intercambiar valores de registros en Oracle SQL?
- 13. ¿cómo puedo ver los registros eliminados de una tabla de servidor sql?
- 14. Recuento de registros distintos - SQL
- 15. ¿CÓMO ACTUALIZAR TOP 400?
- 16. Servidor SQL: extraiga X registros aleatorios por estado
- 17. SQL para producir Top 10 y Otro
- 18. ¿Cómo se comportan las actualizaciones de registros internamente?
- 19. Inserción masiva en el servidor Sql
- 20. Selección de SQL número dinámico de registros
- 21. Servidor SQL - NO EN
- 22. Desempeño del despachador de WPF (100-200 actualizaciones/seg)
- 23. Actualizar varios registros en SQL
- 24. Manera eficiente de obtener el número total de registros en el servidor SQL durante la búsqueda
- 25. Escuche las actualizaciones e instale desde el servidor
- 26. Más de 100 conexiones al servidor sql 2008 en estado "inactivo"
- 27. Inserciones SQL rápidas sin ACTUALIZACIONES
- 28. ¿Cómo puedo denegar actualizaciones excepto en un campo?
- 29. Top 5 consultas SQL que consumen tiempo en Oracle
- 30. Servidor SQL: UNIÓN EXTERIOR IZQUIERDA con TOP 1 para seleccionar en la mayoría de una fila
Este enlace puede ayudarlo http://www.codefari.com/2015/10/how-can-i-update-top-10-records-in-sql.html – Singh