delete con top..

24/04/2004 - 01:14 por ONIL | Informe spam
Hola a todos..!

Me parece que este es un foro estupendo...!

Bueno entrando en materia..!
tengo una duda...

(disculpen lo simple de la pregunta pero le he dado vueltas y nomas no le
encuentro..)

a) Como puedo a traves de T-SQL borrar solo un numero determinado de
registros...
e intentado esto

delete from tabla where (select top 5 * from tabla)

pero me marca un error de sintaxis en el parentesis que cierra la
instrucción..
serian tan amables de iluminar mi camino

De antemano.. muchas gracias...

(\__/)
(=':'=)
(")_(")
ONil@.
MX.

Preguntas similare

Leer las respuestas

#6 ONIL
24/04/2004 - 02:50 | Informe spam
Gracias Diego..

Solo una duda... Que es <codigo>? podrias darme un ejemplo...

Recibe Salu2.
(\__/)
(=':'=)
(")_(")

MX.

"Diego Uribe" wrote in message
news:

delete from tabla where <codigo> in (select top 5 <codigo> from tabla


[where
x=y and z=q])

puedes omitir lo que esta entre [ ]



"ONIL@" escribió en el mensaje
news:
> Hola a todos..!
>
> Me parece que este es un foro estupendo...!
>
> Bueno entrando en materia..!
> tengo una duda...
>
> (disculpen lo simple de la pregunta pero le he dado vueltas y nomas


no
le
> encuentro..)
>
> a) Como puedo a traves de T-SQL borrar solo un numero determinado de
> registros...
> e intentado esto
>
> delete from tabla where (select top 5 * from tabla)
>
> pero me marca un error de sintaxis en el parentesis que cierra la
> instrucción..
> serian tan amables de iluminar mi camino
>
> De antemano.. muchas gracias...
>
> (\__/)
> (=':'=)
> (")_(")
>
> MX.
>
>


Respuesta Responder a este mensaje
#7 ONIL
24/04/2004 - 03:33 | Informe spam
Hola Maximiliano..!

De antemano muchas gracias a ambos por la atención que me prestan..
Lo que uds. me aconsejan es muy cierto..
el pequeño detalle (culpa mia) fue que no explique que en mi tabla no
tengo un campo que me sirva como guia esto es no tengo campos unicos.. puedo
encontrar coincidencia de registros.. asi que lo unico que yo deseo es
borrar fisicamente los primeros 5 registros sin importar cual es su
contenido.. y asi sucesivamente..

Reciban Salu2.
(\__/)
(=':'=)
(")_(")

MX.

"Maximiliano Damian Accotto" wrote in
message news:
Hola, yo te voy a dar otro ejemplo si no se me enoja el amigo ;-)

== >

create table #test1 (id int, nombre varchar(50))


declare @n int
set @n=1

while @n < 500
begin

insert into #test1 values(@n,'maxi ' + convert(varchar(10),@n))
set @n= @n+ 1
end

/* VOY A BORRAR LOS 10 PRIMERO REGISTROS QUE ESTAN ENTRE ID 101
Y 199 ORDENADOS DESCENDENTEMENTE */

delete #test1
from (select top 10 * from #test1 where
id >100 and id <200 order by id desc) as t1
where #test1.id = t1.id

== >
Suerte y espero sea lo que buscas :-)


Salu2 enormes

Maximiliano Damian Accotto

Fundicion San Cayetano S.A.
Gerente de IT
Buenos Aires - Argentina
-
Desarrollador 3 estrellas



http://www.microsoft.com/spanish/ms...efault.asp
-
(maxi_accotto[arroba]speedy.com.ar)
MSN:
-

"ONIL@" escribió en el mensaje
news:
> Hola a todos..!
>
> Me parece que este es un foro estupendo...!
>
> Bueno entrando en materia..!
> tengo una duda...
>
> (disculpen lo simple de la pregunta pero le he dado vueltas y nomas


no
le
> encuentro..)
>
> a) Como puedo a traves de T-SQL borrar solo un numero determinado de
> registros...
> e intentado esto
>
> delete from tabla where (select top 5 * from tabla)
>
> pero me marca un error de sintaxis en el parentesis que cierra la
> instrucción..
> serian tan amables de iluminar mi camino
>
> De antemano.. muchas gracias...
>
> (\__/)
> (=':'=)
> (")_(")
>
> MX.
>
>


Respuesta Responder a este mensaje
#8 Jose Mariano Alvarez \(MUG\)
24/04/2004 - 13:52 | Informe spam
Set rowcount para delete directos sobre tablas locales funciona perfecto si
no tienes triggers que generen otras operaciones los cuales pueden tener
problemas porque también están limitados al número de registros que has
indicado tal como dice la documentación que has copiado.

Jose Mariano Alvarez
jose (.) alvarez * *Arroba* * mug (.) org (.) ar
Comunidad de base de datos
Grupo de Usuarios Microsoft
www.mug.org.ar


.
"Maximiliano Damian Accotto" wrote in
message news:
Hola amigo Isaias!! perdon no!! lo mio solo fue un ejemplo y te quiero
comentar algo:

Extraido del BOL:

Observaciones
Es recomendable que las instrucciones DELETE, INSERT y UPDATE que
actualmente utilizan SET ROWCOUNT se vuelvan a escribir con la sintaxis


TOP.
Para obtener más información, consulte DELETE, INSERT o UPDATE.

La configuración de la opción SET ROWCOUNT se ignora en las instrucciones
INSERT, UPDATE y DELETE con tablas remotas y vistas divididas remotas y
locales.

Para desactivar esta opción (de modo que se devuelvan todas las filas),
especifique SET ROWCOUNT 0.



Nota Al establecer la opción SET ROWCOUNT, la mayoría de las


instrucciones
Transact-SQL dejarán de procesarse cuando hayan afectado al número de


filas
especificado. Ello incluye a los desencadenadores y a las instrucciones


que
modifican datos, como INSERT, UPDATE y DELETE. La opción ROWCOUNT no tiene
efecto en los cursores dinámicos, pero limita el conjunto de filas de los
cursores de conjunto de claves y los que no distinguen. Esta opción se


debe
usar con cuidado y, principalmente, con la instrucción SELECT.


SET ROWCOUNT anula la palabra clave TOP de la instrucción SELECT si el
número de filas es inferior.

La opción SET ROWCOUNT se establece en tiempo de ejecución, no en tiempo


de
análisis.



==>


Yo no usaria set Rowcount, quizas en nuevas versiones no este mas ;-)





Salu2 enormes

Maximiliano Damian Accotto

Fundicion San Cayetano S.A.
Gerente de IT
Buenos Aires - Argentina
-
Desarrollador 3 estrellas
http://www.microsoft.com/spanish/ms...efault.asp
-
(maxi_accotto[arroba]speedy.com.ar)
MSN:
-

"Isaías" escribió en el mensaje
news:38da01c4298b$da085a70$
> Diego/Maxi
>
> Amigos, eso es mas simple que hacer un WHILE y no se que
> tantas cosas.
>
> SET ROWCOUNT 10 -- ESTABLEZCO A 10 EL CONTEO
> DELETE MyTabla -- SOLO BORRO 10 REGISTROS
> SET ROWCOUNT 0 -- REGRESO EL CONTEO



Respuesta Responder a este mensaje
#9 Maximiliano Damian Accotto
24/04/2004 - 16:00 | Informe spam
Hola, si funciona pero yo no lo usaria, quizas en futuras versiones no
exista mas ;-)


Salu2 enormes

Maximiliano Damian Accotto

Fundicion San Cayetano S.A.
Gerente de IT
Buenos Aires - Argentina
-
Desarrollador 3 estrellas
http://www.microsoft.com/spanish/ms...efault.asp
-
(maxi_accotto[arroba]speedy.com.ar)
MSN:
-

"Jose Mariano Alvarez (MUG)" <jose.alvarez * *Arroba* * mug.org.ar> escribió
en el mensaje news:
Set rowcount para delete directos sobre tablas locales funciona perfecto


si
no tienes triggers que generen otras operaciones los cuales pueden tener
problemas porque también están limitados al número de registros que has
indicado tal como dice la documentación que has copiado.

Jose Mariano Alvarez
jose (.) alvarez * *Arroba* * mug (.) org (.) ar
Comunidad de base de datos
Grupo de Usuarios Microsoft
www.mug.org.ar


.
"Maximiliano Damian Accotto" wrote in
message news:
> Hola amigo Isaias!! perdon no!! lo mio solo fue un ejemplo y te quiero
> comentar algo:
>
> Extraido del BOL:
>
> Observaciones
> Es recomendable que las instrucciones DELETE, INSERT y UPDATE que
> actualmente utilizan SET ROWCOUNT se vuelvan a escribir con la sintaxis
TOP.
> Para obtener más información, consulte DELETE, INSERT o UPDATE.
>
> La configuración de la opción SET ROWCOUNT se ignora en las


instrucciones
> INSERT, UPDATE y DELETE con tablas remotas y vistas divididas remotas y
> locales.
>
> Para desactivar esta opción (de modo que se devuelvan todas las filas),
> especifique SET ROWCOUNT 0.
>
>
>
> Nota Al establecer la opción SET ROWCOUNT, la mayoría de las
instrucciones
> Transact-SQL dejarán de procesarse cuando hayan afectado al número de
filas
> especificado. Ello incluye a los desencadenadores y a las instrucciones
que
> modifican datos, como INSERT, UPDATE y DELETE. La opción ROWCOUNT no


tiene
> efecto en los cursores dinámicos, pero limita el conjunto de filas de


los
> cursores de conjunto de claves y los que no distinguen. Esta opción se
debe
> usar con cuidado y, principalmente, con la instrucción SELECT.
>
>
> SET ROWCOUNT anula la palabra clave TOP de la instrucción SELECT si el
> número de filas es inferior.
>
> La opción SET ROWCOUNT se establece en tiempo de ejecución, no en tiempo
de
> análisis.
>
>
>
> ==> >
>
>
> Yo no usaria set Rowcount, quizas en nuevas versiones no este mas ;-)
>
>
>
>
>
> Salu2 enormes
>
> Maximiliano Damian Accotto
>
> Fundicion San Cayetano S.A.
> Gerente de IT
> Buenos Aires - Argentina
> -
> Desarrollador 3 estrellas
>


http://www.microsoft.com/spanish/ms...efault.asp
> -
> (maxi_accotto[arroba]speedy.com.ar)
> MSN:
> -
>
> "Isaías" escribió en el mensaje
> news:38da01c4298b$da085a70$
> > Diego/Maxi
> >
> > Amigos, eso es mas simple que hacer un WHILE y no se que
> > tantas cosas.
> >
> > SET ROWCOUNT 10 -- ESTABLEZCO A 10 EL CONTEO
> > DELETE MyTabla -- SOLO BORRO 10 REGISTROS
> > SET ROWCOUNT 0 -- REGRESO EL CONTEO
>
>
>


Respuesta Responder a este mensaje
#10 Diego Uribe
26/04/2004 - 21:52 | Informe spam
el código es la llave de la tabla el identificador unico, generalmente
un autonumérico


"ONIL@" escribió en el mensaje
news:

Gracias Diego..

Solo una duda... Que es <codigo>? podrias darme un ejemplo...

Recibe Salu2.
(\__/)
(=':'=)
(")_(")

MX.

"Diego Uribe" wrote in message
news:
>
> delete from tabla where <codigo> in (select top 5 <codigo> from tabla
[where
> x=y and z=q])
>
> puedes omitir lo que esta entre [ ]
>
>
>
> "ONIL@" escribió en el mensaje
> news:
> > Hola a todos..!
> >
> > Me parece que este es un foro estupendo...!
> >
> > Bueno entrando en materia..!
> > tengo una duda...
> >
> > (disculpen lo simple de la pregunta pero le he dado vueltas y


nomas
no
> le
> > encuentro..)
> >
> > a) Como puedo a traves de T-SQL borrar solo un numero determinado


de
> > registros...
> > e intentado esto
> >
> > delete from tabla where (select top 5 * from tabla)
> >
> > pero me marca un error de sintaxis en el parentesis que cierra la
> > instrucción..
> > serian tan amables de iluminar mi camino
> >
> > De antemano.. muchas gracias...
> >
> > (\__/)
> > (=':'=)
> > (")_(")
> >
> > MX.
> >
> >
>
>


Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida