Quiero actualizar los 100 mejores registros en SQL Server. Tengo una mesa T1con campos F1y F2. T1Tiene 200 registros. Quiero actualizar el F1campo en los 100 mejores registros. ¿Cómo puedo actualizar basado TOP 100en SQL Server?
sql
sql-server
tsql
sql-update
Rajesh
fuente
fuente

order bytambién?Sin una
ORDER BYidea completaTOPno tiene mucho sentido. Debe tener una definición coherente de qué dirección está "arriba" y cuál está "abajo" para que el concepto de arriba sea significativo.No obstante, SQL Server lo permite pero no garantiza un resultado determinista .
La
UPDATE TOPsintaxis en la respuesta aceptada no admite unaORDER BYcláusula, pero aquí es posible obtener una semántica determinista utilizando un CTE o una tabla derivada para definir el orden de clasificación deseado como se muestra a continuación.fuente
TOPprobabilidades, deberías usarloORDER BYporque lo que te interesa es como "lo más" o "menos" de algo. En otros casos, sin embargo, es posible que solo le interese obtener un registro coincidente. ¡Como yo hoy! Necesitaba solucionar problemas de datos (ciclos) uno a la vez. Todo el proceso de reparación involucró un script db, alguna intervención del usuario y algunas operaciones de la aplicación. No nos importó QUÉ registro se manejó primero. Simplemente nos preocupaba que los estuviéramos manejando uno a la vez.WHEREcláusula para excluir registros procesados previamente. La pregunta como respuesta escrita y aceptada carece de sentido. Por cierto: para usar tablas como una cola, este es un enlace bastante útilwherecláusula para evitar procesar las mismas filas una y otra vez.para aquellos como yo que todavía estamos atrapados con SQL Server 2000,
SET ROWCOUNT {number};se puede usar antes de laUPDATEconsultalimitará la actualización a 100 filas
Ha quedado en desuso al menos desde SQL 2005, pero a partir de SQL 2017 todavía funciona. https://docs.microsoft.com/en-us/sql/t-sql/statements/set-rowcount-transact-sql?view=sql-server-2017
fuente
fuente
Lo que es aún mejor es el hecho de que puede usar una función en línea con valores de tabla para seleccionar qué (y cuántas
TOP) filas (s) actualizar. Es decir:Para la función de valor de tabla, tiene algo interesante para seleccionar la fila para actualizar como:
..., y ahí radica (en mi humilde opinión) el verdadero poder de actualizar solo las primeras filas seleccionadas de manera determinista y al mismo tiempo simplificar la sintaxis de la
UPDATEdeclaración.fuente
Tratar:
fuente
También puede actualizar desde select usando un alias y unirse:
fuente