Necesito ayuda para eliminar registros duplicados de algunas tablas, ya que se realizo un full import sobre una Base de Datos donde ya existía dicha información. ¿Cómo podría solucionar ese problema? ¿Podría ejecutar algún script sobre esas tablas para eliminar dicha duplicidad?
¿Has probado hacer una subconsulta para averiguar los registros duplicados?. Suponiendo que las tablas con registros duplicados son table1 con llave primaria ID1 y table2 con llave primaria ID2 puedes probar lo siguiente: select * from table1 where ID1 in (select ID2 from table2) Esta consulta te da como resultado los registros de la tabla1 que tienen llaves primarias iguales que en la tabla2 y se puede usar este hecho para eliminarlos de la tabla1: delete from table1 fwhere ID1 in (select ID2 from table2) Suerte!
Gracias por tu comentario! Pero mi problema no va por ahí, ya que la duplicidad de datos se debe a que algunas tablas no cuentan con una llave primaria; cabe mencionar que ya esta comprobado que existe información duplicada, por lo que necesitamos saber la solución para la depuración de dichas tablas.
En esa situación puedes probar lo siguiente: 1. Hacer un full import sobre una nueva base de datos, digamos «dbBackup». 2. Para solucionar el problema de las tablas importadas sin llave primaria: * Exporta los datos de las tablas problemáticas a Excel. *En Excel "reconstruir" la tabla con los campos que sean necesarios. Parte de esta reconstrucción es agregar una columna de ID que podemos autorrellenar muy fácilmente de manera secuencial: 1, 2, 3,... * Importar el archivo excel trabajado a la base de datos. En este punto tenemos una nueva tabla con su columna ID de llave primaria completa en todos sus registros. 3. Ahora bien, repasemos lo que tenemos: dos bases de datos, la nueva que la llamé «dbBackup» y la base de datos existente, digamos «dbExists». En dbExists existe información duplicada que se encuentra en dbBackup. Con el fin de ser didáctico voy asumir un par de tablas de ejemplo: En dbExists existe la tabla table1 con esta información: id campo_repetido -- -------------------------- 1 b 2 x 3 c 4 a 5 z En dbBackup existe la tabla table1 con esta información: id campo_repetido -- -------------------------- 1 a 2 b 3 c 4 d 5 e Como es evidente la información que se repite en el campo_repetido es a, b y c. 4. La siguiente consulta: select id, campo_repetido from dbBackup..table1 where campo_repetido in (select campo_repetido from dbExists..table1) Nos da como resultado justamente la información a, b y c que se repite con los ID's respectivos de los registros de la table1 de la base datos dbBackup. Sabiendo los ID's que se repiten podemos decidir eliminarlos o actualizarlos en la base de datos dbBackup. Bueno.