Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

sql server(modificar solo los primeros 100 registros)

2,926 views
Skip to first unread message

Marcelo Salazar

unread,
Jul 22, 2002, 5:04:37 PM7/22/02
to
Hola, nesecito modificar solamente los primeros 100
registros sin una condicion, como lo puedo hacer

Isaías

unread,
Jul 22, 2002, 5:19:42 PM7/22/02
to
Hola

SET ROWCOUNT 100
UPDATE MyTabla SET MyColumnas = MyVariable -- o Constante
SET ROWCOUNT 0

La opcion SET ROWCOUNT define CUANTOS registros deberan
entrar en el "count" de la instruccion SQL, funciona,
tanto para UPDATE, DELETE, INSERT o SELECT

El volver a colocar SET ROWCOUNT 0, se reestablece.

Saludos.

Eladio Rincón

unread,
Jul 22, 2002, 6:03:06 PM7/22/02
to
Hola Isaias,
al querer actualizar un número de registro ( los n primeros ) se le debe
aplicar un criterio de ordenación.

Por otra parte, el procesador de consultas de SQL Server (en la versión
2000) optimiza mejor las consultas que tienen TOP n que las que tienen
ROWCOUNT ( creo recordar que eran sólo mejoras en tiempo de CPU, NO en
tiempo de lectura / escritura ).

--
Saludos;

Eladio Rincón
Pass Spanish Group
tvel...@torrevieja.infoville.net

"Isaías" <iis...@hotmail.com> escribió en el mensaje
news:002f01c231c5$7e9382b0$3aef2ecf@TKMSFTNGXA09...

Isaías

unread,
Jul 22, 2002, 6:46:22 PM7/22/02
to
100% de acuerdo contigo Eladio, solo que en UPDATE no te
acepta el TOP n, por eso es que le sugeri que utilizara el
ROWCOUNT.

No se cual sea la razon por la cual desea hacer un UPDATE
de los "primeros" 100 registros sin una condicion de
WHERE, pero fue la unica solucion que se me ocurrio.

Saludos.

Eladio Rincón

unread,
Jul 23, 2002, 7:25:03 AM7/23/02
to
Hola Isaias;

También se pueden hacer actualizaciones con TOP ( incluyendolo en un JOIN, o
con el "viejo" WHERE ):

use Northwind
go

select *
into copia_customers
from customers
go

update c1
set c1.CompanyName = c1.CompanyName + 'B'
from copia_customers c1 inner join ( select top 3 *
from copia_customers order by CustomerID asc ) as c2
on c2.CustomerID = c1.CustomerID

update c1
set c1.CompanyName = c1.CompanyName + 'B'
from copia_customers c1, ( select top 3 *
from copia_customers order by CustomerID asc ) as c2
where
c2.CustomerID = c1.CustomerID

--
Saludos;

Eladio Rincón
Pass Spanish Group
tvel...@torrevieja.infoville.net

"Isaías" <iis...@hotmail.com> escribió en el mensaje

news:1b3ee01c231d1$9a1aaac0$9be62ecf@tkmsftngxa03...

0 new messages