eliminación de duplicados quédate con UNO.

20/04/2008 - 00:13 por David | Informe spam
Muy buenas,

Microsoft SQL Server 2000

Teniendo una tabla tan simple como

direcciones

[id] autonumérico, calve principal
[email] cadena que almacena la dirección electrónica

En la tabla se almacenan correos electrónicos DUPLICADOS (triplicados,
cuadrúplicados, ..., vete tú a saber, creo que existen mas de 20.000
e-mails), el hecho es que hay datos REPETIDOS.

¿Cómo podría montar una consulta de eliminación que eliminara los registros
"redundantes" y se quedara con uno?
me explico:

1 pepe@hotmail.com
2 miguel@hotmail.com
3 pepe@hotmail,com
4 pepe@hotmail.com
5 david@hotmail.com
6 miguel@hotmail.com

Despúes de la eliminación de "duplicados quedate con uno", la tabla quedaría
con los siguientes datos
(es indiferente con cual se quede de los duplicados)

1 pepe@hotamil.com
6 miguel@hotmailcom
5 david@hotamil.com

INSISTO es indiferente el registro duplicado que mantiene (lo comento porque
he puesto la clave principal y para no llevar a confusiones)

Reconozco que no tengo ni "p.i." de cómo meterle mano a la consulta.

Gracias de antemano.

Nota: me da un poco de "cosa" el ni tan siquiera plantear una posible
solución, pero n.p.i.

Preguntas similare

Leer las respuestas

#1 Maxi Accotto
20/04/2008 - 00:18 | Informe spam
http://support.microsoft.com/kb/139444


Microsoft MVP SQLServer
www.sqltotalconsulting.com
-

"David" escribió en el mensaje de
noticias:
Mostrar la cita
#2 David
20/04/2008 - 00:38 | Informe spam
Mil gracias por contestar

http://support.microsoft.com/kb/139444

"tela marinera"

Ahora mismo para manipular esa tabla con e-mail's repetidos estoy haciendo
esto:

SELECT DISTINCT email FROM direcciones

Había pensado en realizar este tipo de SELECT, para posteriormente "llenar"
una tabla VIRGEN y cargarme la que tiene duplicados.

Pero, directamente no se podría implementar un "DELETE de duplicados,
quédate con uno" ( :-)
#3 Carlos M. Calvelo
20/04/2008 - 00:53 | Informe spam
Hola David,

On 20 apr, 00:13, "David" wrote:
Mostrar la cita
Despues de leer esto (y si entiendo bien) no necesitas la
columna [id] para nada en la tabla.

Por qué no tener esta estructura entonces?
direcciones

[email] varchar() (o lo que sea) not null primary key (o unique
index)

Saludos,
Carlos
#4 David
20/04/2008 - 01:07 | Informe spam
Otras mil gracias por contestar.

El caso es que la tabla está así (la base de datos me la encontré así,
supongo que el padre de la criatura cerró la puerta antes de salir
corriendo)

Retomando el tema, ¿es posible realizar un "DELETE de duplicados quédate con
uno" :-)?
#5 Carlos M. Calvelo
20/04/2008 - 01:50 | Informe spam
Hola David,

On 20 apr, 01:07, "David" wrote:
Mostrar la cita
Eso quiere decir que no sabes como está siendo utilizado
el [id]. Por ejemplo como referencia desde otras tablas.
Y por tanto no puedes estar segugo de cuales puedes borrar.

Mostrar la cita
Si.
Podrías borrar todos aquellos registors con un [id]
que no estén en en el resultado de este select

select min([id]) from direcciones group by email

Saludos,
Carlos
Ads by Google
Search Busqueda sugerida