ayuda como borrar registros duplicados

nando64
18 de Mayo del 2005
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.

trazom
18 de Mayo del 2005
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.