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

#1 Diego Uribe
24/04/2004 - 00:31 | Informe spam
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
#2 Maximiliano Damian Accotto
24/04/2004 - 01:17 | Informe spam
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
#3 Isaías
24/04/2004 - 01:36 | Informe spam
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
#4 Maximiliano Damian Accotto
24/04/2004 - 01:51 | Informe spam
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




begin 666 note.gif
M1TE&.#EA# `+`(#_`(2&`,# P"'Y! $```$`+ `````,``L`0 (:C(\(H'S[
68%R0&ED;M7,'[%S2YW#1)VJ;4P``.P``
`
end
Respuesta Responder a este mensaje
#5 Maximiliano Damian Accotto
24/04/2004 - 01:53 | Informe spam
Hola, y cual es el problema a eso? yo lo hice con un campo unico pero como
ej, el top siempre traera los n registros, pero los debes ordenar por algun
medio, si queres que el orden sea aleatorio podes usar Newid()

Suerte


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 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
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida