SQL - Ayuda Registros Duplicados

 
Vista:

Ayuda Registros Duplicados

Publicado por Luis Saravia (14 intervenciones) el 18/03/2003 18:02:19
Hola a Todos es bueno contar con personas que te puedadn ayudar a resolver los problemas que aparecen diariamente. Mi consulta es la siguiente, ¿Como puedo eliminar registros duplicados de una tabla especifica?.

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 Registros Duplicados

Publicado por fernando.gomez (5 intervenciones) el 18/03/2003 19:57:13
Con campos llave. Un campo llave es un dato que es unico en la tabla, y que no puede ser repetido. Asi, si CAMPO1 es llave, y CAMPO1 = "fernando", no puede haber otro registro donde CAMPO1 sea "fernando". La base de datos te lanza un mensaje de error cuando intentas hacer esto.

Ahora bien, tambien puedes declarar varios campos como llave. En este caso, no se puede repetir todos los valores de los campos llave. Digamos, por ejemplo, que CAMPO1 y CAMPO2 son llave. entonces, si tenemos que CAMPO1 = "fernando" y CAMPO2 = "gomez", no puedes insertar otro "fernando" "gomez" para CAMPO1 y CAMPO2 en el mismo registro. Podras insertar a algun "fernando" "chavez" o "agustin" "gomez", pero no duplicar todos los datos de los campos llave.

Saludos.
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

RE:Ayuda Registros Duplicados

Publicado por Isaías Islas (5072 intervenciones) el 18/03/2003 20:15:37
La explicación de Fernando te dice COMO EVITAR LOS DUPLICADOS, ahora que si ya existen duplicados en tu tabla y lo que deseas es ELIMINARLOS:

DECLARE @col1 SMALLINT, @col2 INT, @dupcnt INT
declare dups cursor
for select MyColumna1, MyColumna2,(count(*) - 1) as Duplicates from MyTabla
group by MyColumna1,
MyColumna2 having count(*) > 1 order by MyColumna1,
MyColumna2

open dups

while(1=1)
begin
fetch next from dups into @col1, @col2, @dupcnt
if (@@fetch_status < 0)
break
set rowcount @dupcnt
delete MyTabla where MyColumna1= @col1 and MyColumna2= @col2
end

deallocate dups

Puedes modificar el script para que sea solamente UNA COLUMNA.

Te recomiendo que antes de ejecutar este proceso, saques un respaldo de tu tabla.

SELECT *
INTO MyRespaldo
FROM MyTabla

Saludos.
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