borrar duplicados

30/01/2006 - 19:40 por Mauro | Informe spam
por un problema en una aplicacion se duplicaron las entradas en una tabla
que no tiene clave primaria.
aunque identifico cuales son los registros duplicados, no se me ocurre como
puedo hacer para borrarlos , ya que no
cuento con un identificador unico,
como puedo hacerlo, teneindo en cuenta que las filas son identicas para
borrar uno de los 2 registros y asi dejar la base consistente.

saludos
Mauro.
 

Leer las respuestas

#1 Isaias
30/01/2006 - 20:34 | Informe spam
Mauro

Analiza este script, si tienes dudas, pregunta:

DECLARE @col1 SMALLINT, @col2 INT, @dupcnt INT
declare dups cursor for
SELECT MyCol1, MyCol2, (count(*) - 1) as Duplicates
FROM MyTabla
GROUP BY MyCol1, Mycol2
HAVING count(*) > 1 order by MyCol1, MyCol2

OPEN dups
WHILE(1=1)
BEGIN
FETCH NEXT FROM dups INTO @col1, @col2, @dupcnt
IF (@@fetch_status < 0)
BREAK -- Rompo el Ciclo
SET rowcount @dupcnt
DELETE MyTabla WHERE MyCol1 = @col1 and MyCol2 = @col2
END
DEALLOCATE dups
SET ROWCOUNT 0
Saludos
IIslas


"Mauro" escribió:

por un problema en una aplicacion se duplicaron las entradas en una tabla
que no tiene clave primaria.
aunque identifico cuales son los registros duplicados, no se me ocurre como
puedo hacer para borrarlos , ya que no
cuento con un identificador unico,
como puedo hacerlo, teneindo en cuenta que las filas son identicas para
borrar uno de los 2 registros y asi dejar la base consistente.

saludos
Mauro.



Preguntas similares