ayuda como borrar registros duplicados
hola, tengo una llave compuesta, son 2 campos campo1 y campo2 y el conjunto de los 2 forman un primary key, estos deben de tener la opción no validate por como se insertan los datos, es decir en los 2 campos pueden haber duplicados pero en su conjunto no, en una tabla hija tengo duplicados de la tabla principal, la pregunta es como se cuales registros son y como los borro de la tabla hija, gracias de antemano.
Para saber que registros tienen la PK duplicada en esa tabla puedes hacer:
select campo1, campo2, count(*)
from tabla
group by campo1, campo2
having count(*) > 1;
donde campo1 y campo2 son los campos que forman la PK.
Luego tienes que borrar todos los repetidos menos 1, para que la constraint de clave primaria se siga cumpliendo, entonces puedes ejecutar:
delete from tabla
where rowid not in (select max(rowid)
from tabla
group by campo1, campo2);
Saludos.
select campo1, campo2, count(*)
from tabla
group by campo1, campo2
having count(*) > 1;
donde campo1 y campo2 son los campos que forman la PK.
Luego tienes que borrar todos los repetidos menos 1, para que la constraint de clave primaria se siga cumpliendo, entonces puedes ejecutar:
delete from tabla
where rowid not in (select max(rowid)
from tabla
group by campo1, campo2);
Saludos.
