Hola.. queria saber como puedo hacer para eliminar registros de una BD si estan repetidos.. pero dejando 1 en la base..
es decir.. eliminar los qeu estan repetidos..
| ||||
Eliminar registros repetidos dejando solo 1 Hola.. queria saber como puedo hacer para eliminar registros de una BD si estan repetidos.. pero dejando 1 en la base.. es decir.. eliminar los qeu estan repetidos..
__________________ ALOZORRO v5.0 (ahora en .es) |
| ||||
Bueno.. yo algo asi habia pensado.. pero en el paso tercero que tu dices si uso el delete lo que hace es borrarme todos los registros que cumplan la condicion.. y yo lo que quiero es que me deje uno solo... yo había pensado hacer esto: primero: la busqueda segundo: la verificacion y si es mayor que 1 hacer "tercero" tercero: guardar lso datos ese registro repetido (email, usuario y posibles demas datos), borrar todos los que sean iguales y volver a insertarlo solo una vez.. pero nose.. no lo veo muy "optimizado".. era mas que nada por eso.. por si habia alguna manera mejor jeje.. gracias de todas formas..
__________________ ALOZORRO v5.0 (ahora en .es) |
| |||
Se me ocurre algo tipo: Suponiendo que tenemos un campo "ID" autonumérico y único que identifica nuestros registros .. OK? (esto es la "base" de mi argumento . .si no está no sirve leer más lo que voy a escribir). Se trata de: 1) Contar el n° de ocurrencias del registro repetido: SELECT COUNT(*) WHERE campo='$valor' 2) Borrar registros por ese criterio pero con "LIMIT" al total-1 DELETE FROM pruebas WHERE mombre='pedro' ORDER BY id LIMIT $total_menos_uno Ordeno por el campo ID para quedarme con el "mayor" o el "menor" (según uses DESC o ASC ..) de la primera (o última) aparición de ese registro por cierto criterio repetido. Lo hice con un prueba a mano y parece funcionar mi "teoría" .. Un saludo,
__________________ Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo. |
| ||||
mmm parece interesante la idea esa del limit, tendré que probarlo para la proxima vez ![]() una cosilla.. supongamos que tengo que eliminar los repetidos, pero no se nada de los datos que tengo en la base de datos, es decir, en el problema que tenia antes yo sabia por que valor tenia que borrar, tenia una lista de emails en un txt y a partir de ahi miraba en la base para cada email del fichero, si estaba repetido lo borraba, pero que pasaría si no se nada y simplemente tengo que borrar los repetidos?? si aplico lo que acaba de decir cluster funcionaría esto?: DELETE FROM pruebas ORDER BY id LIMIT $total_menos_uno HAVING count(*)>1 es que estube buscando por ahi y me encontré esto del having, pero no sé si funcionará.. lo probé en la base y me sale un registro, pero no está repetido.. nosé si será asi... ah.. y gracias por la ayuda clus ![]()
__________________ ALOZORRO v5.0 (ahora en .es) |
| |||
Cita: Ahí no sé .. consulta en el foro de "Base de datos".
Iniciado por Azrael666 mmm parece interesante la idea esa del limit, tendré que probarlo para la proxima vez ![]() una cosilla.. supongamos que tengo que eliminar los repetidos, pero no se nada de los datos que tengo en la base de datos, es decir, en el problema que tenia antes yo sabia por que valor tenia que borrar, tenia una lista de emails en un txt y a partir de ahi miraba en la base para cada email del fichero, si estaba repetido lo borraba, pero que pasaría si no se nada y simplemente tengo que borrar los repetidos?? si aplico lo que acaba de decir cluster funcionaría esto?: DELETE FROM pruebas ORDER BY id LIMIT $total_menos_uno HAVING count(*)>1 es que estube buscando por ahi y me encontré esto del having, pero no sé si funcionará.. lo probé en la base y me sale un registro, pero no está repetido.. nosé si será asi... ah.. y gracias por la ayuda clus ![]() Un saludo,
__________________ Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo. |