SQL - Ayuda por favor

   
Vista:

Ayuda por favor

Publicado por Nilthon (6 intervenciones) el 19/11/2010 22:09:00
quieri hacer una consulta en SQL de tal manera que me elimine los registros Pares yo lo hacia de esta menera En FoxPro.....

Delete all for mod(recno(),2)=0


y en SQL no me sale quiero hacer los mismo en SQL como seria por Favor los voy a agradecer mucho
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ayuda por favor

Publicado por Leonardo Josué (877 intervenciones) el 19/11/2010 22:48:54
Buenas tardes Nilthon... En primer lugar no mencionas qué manejador de BD estás utilizando, no entiendo si cuando dices que quieres hacer lo mismo en SQL te refieres a SQL Server o al lenguaje como tal... Voy a suponer que estás utilizando SQL Server. Tengo duda acerca de si tienes algún campo identificador que te pueda mostrar el número de renglón, por ejemplo, si tienes algo como esto

id|descripcion
1|uno
2|dos
3|tres
4|cuatro
5|cinco
6|seis

Si quieres eliminar los id pares sólo tendrías que hacer lo siguiente

delete from TuTabla where id % 2 = 0

Ahora bien, si el problema es que no tienes ningún campo que te numere los registros entonces hay que hacer algunos pasos adicionales... por ejemplo, pudieras agregar una columna a tu tabla con el respectivo número de registro que le corresponde, después eliminar los pares como está indicado anteriormente y al finalmente borrar la columna que agregaste... suena algo complicado, pero es lo único que se me ocurre en estos momentos, sería más o menos así:

--Creamos una tabla de ejemplo
create table dbo.tabla_ejemplo(descripcion varchar (10))
--Insertamos valores a la tabla
insert into dbo.tabla_ejemplo values ('uno')
insert into dbo.tabla_ejemplo values ('dos')
insert into dbo.tabla_ejemplo values ('tres')
insert into dbo.tabla_ejemplo values ('cuatro')
insert into dbo.tabla_ejemplo values ('cinco')
insert into dbo.tabla_ejemplo values ('seis')
--Verificamos el contenido de la tabla
select * from dbo.tabla_ejemplo
--Agregamos una columna a la tabla para almacenar el No. de registro
alter table dbo.tabla_ejemplo add id int null;
--Verificamos que se agregó la columna
select * from dbo.tabla_ejemplo
--Asignamos el número registro a la columna id
declare @NoRegistro int
set @NoRegistro = 0;
update dbo.tabla_ejemplo set @NoRegistro = id = @NoRegistro + 1
--Verificamos que se asignó correctamente el número de registro
select * from dbo.tabla_ejemplo
--Eliminamos los registros pares
delete from dbo.tabla_ejemplo where id % 2 = 0
--Verificamos que se eliminaron los registros pares
select * from dbo.tabla_ejemplo
--Eliminamos la columna que se agregó
alter table dbo.tabla_ejemplo drop column id
--Verificamos que se eliminó la columna de la tabla
select * from dbo.tabla_ejemplo
--Borramos la tabla de ejemplo
drop table dbo.tabla_ejemplo

Otra opción sería utilizar la función Row_number(), pero nunca la he aplicado en una sentencia delete... si encuentro algo mejor te lo comento mañana.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar