210 votos

¿Cómo puedo actualizar top 100 registros en sql server

Quiero actualizar Top 100 registros en sql server. Tengo una tabla T1 con campos de F1 y F2. T1 tiene 200 registros. Quiero actualizar campo F1 de Top 100 registros. ¿Cómo puedo puede actualizar en sql server.

Gracias

352voto

Umair Ahmed Puntos 4020

Tenga en cuenta, los paréntesis son obligatorios para las sentencias UPDATE:

update top (100) table1 set field1 = 1

159voto

Martin Smith Puntos 174101

Sin ORDER BY de toda la idea del TOP no tiene mucho sentido. Necesitas tener una definición consistente de que la dirección es "" y que es "abajo" para el concepto de la parte superior para que sea significativo.

No obstante, SQL Server lo permite, pero no es garantía de un resultado determinista.

La UPDATE TOP de sintaxis en la aceptó respuesta no admite ORDER BY cláusula, pero es posible obtener determinista semántica aquí mediante el uso de un CTE o una tabla derivada para definir el orden deseado de la siguiente manera.

;WITH CTE AS 
( 
SELECT TOP 100 * 
FROM T1 
ORDER BY F2 
) 
UPDATE CTE SET F1='foo'

10voto

Claudio B Puntos 46

para aquellos que como yo aún atrapado con SQL Server 2000, SET ROWCOUNT {number}; puede ser utilizado antes de la UPDATE consulta

SET ROWCOUNT 100;
UPDATE Table SET ..;
SET ROWCOUNT 0;

limitará la actualización de 100 filas

Se ha quedado obsoleto por lo menos desde SQL 2005, pero a partir de 2012 SQL todavía funciona

5voto

hyyxing Puntos 71
update tb set  f1=1 where id in (select top 100 id from tb where f1=0)

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X