Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Verificar registros repetidos (MySQL)

Estas en el tema de Verificar registros repetidos (MySQL) en el foro de Bases de Datos General en Foros del Web. Hola a todos. Tengo una tabla con la siguiente estructura: id (int 10) email (varchar 255) Tengo muchos emails en la tabla, miles. Me gustaría ...
  #1 (permalink)  
Antiguo 11/11/2004, 16:54
Avatar de Takitei  
Fecha de Ingreso: septiembre-2004
Ubicación: Venezuela
Mensajes: 1.231
Antigüedad: 19 años, 7 meses
Puntos: 5
Verificar registros repetidos (MySQL)

Hola a todos.

Tengo una tabla con la siguiente estructura:

id (int 10)
email (varchar 255)

Tengo muchos emails en la tabla, miles. Me gustaría saber con qué consulta SQL podría borrar los registros que se encuentren repetidos. Por ejemplo, supongamos que hay 2 emails iguales, [email protected], ¿Cómo hago una comprobación continua y borrar los repetidos?ç

Uso PHP.

Un saludo!
__________________
Takitei
Ingeniarte.com
DannyHerran.com
"Dadme un punto de apoyo y moveré la tierra" - Arquímedes.
  #2 (permalink)  
Antiguo 11/11/2004, 17:08
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 20 años, 6 meses
Puntos: 11
Repito lo que habia puesto en otro post donde se preguntaba lo mismo. Prueba esto:

1. No deberian haber registros repetidos, para eso estan las clave primarias.
2. Yo haría algo asi, con estas 4 instrucciones sql en ese orden:

# 1. crear una tabla que tenga los registros de la otra sin repetir, asi:
create table nueva as select distinct * from tabla vieja

# 2. borrar todos los registros de la tabla vieja
delete from vieja

# 3. insertar los registros de la tabla nueva en la vieja
insert into vieja select * from nueva

# 4. eliminar la tabla nueva
drop table nueva
  #3 (permalink)  
Antiguo 11/11/2004, 17:16
Avatar de Takitei  
Fecha de Ingreso: septiembre-2004
Ubicación: Venezuela
Mensajes: 1.231
Antigüedad: 19 años, 7 meses
Puntos: 5
Bueno, si hay registros repetidos porque la clave primaria no cumple ninguna función en ell INSERT. O sea... hay distinto ID pero igual EMAIL.

Voy a probar lo que dices Claudio. Un saludo y mil gracias!
__________________
Takitei
Ingeniarte.com
DannyHerran.com
"Dadme un punto de apoyo y moveré la tierra" - Arquímedes.
  #4 (permalink)  
Antiguo 11/11/2004, 17:45
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 20 años, 6 meses
Puntos: 11
Entonces el ejemplo que te di no te va a servir, dado que:

id mail
1 [email protected]
2 [email protected]

son dos registros distintos.

Prueba esto

# 1. crear una tabla que tenga los registros de la otra sin repetir, asi:
create table nueva as select min(id) as minid,mail from tabla vieja group by mail

# 2. borrar todos los registros de la tabla vieja
delete from vieja

# 3. insertar los registros de la tabla nueva en la vieja
insert into vieja select minid as id,mail from nueva

# 4. eliminar la tabla nueva
drop table nueva


espero que se entienda
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:31.