Ver Mensaje Individual
  #3  
Antiguo 01-04-2011
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.739
Reputación: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
La cuestión es si quieres dejar 1 de los registros duplicados o borrar las dos ocurrencias

En el caso de borrar todo:
Código SQL [-]
/* Esta parte borra registros */
DELETE FROM TABLA
WHERE ID IN 
   (
   /* Esta parde devuelve los registros multiplicados */
   SELECT ID FROM TABLA
   GROUP BY ID
   HAVING COUNT(*) >= 2
   )

Si quieres dejar uno:
Código SQL [-]

/* Esta parte borra registros */
DELETE FROM TABLA
WHERE RDB$DB_KEY IN
   (
   /* Esta parde devuelve el primer registro multiplicado */
   SELECT FIRST 1 RDB$DB_KEY FROM TABLA
   GROUP BY ID
   HAVING COUNT(*) >= 2
   )

RDB$DB_KEY es un campo "de sistema" que identifica a cada registro. Es un CHAR(8) para las tablas.
Si es una vista que une dos tablas es un CHAR(16). Si une 3 tablas es CHAR(24), y así sucesivamente.
Responder Con Cita