Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Eliminacion de duplicado de registros (https://www.clubdelphi.com/foros/showthread.php?t=73110)

amerika111 01-04-2011 06:03:42

Eliminacion de duplicado de registros
 
Hola que tal, necesito eliminar los registros repetidos de una tabla esos ya los tengo son alrededor de 40 registros que se repiten, y para la eliminacion de estos se me ocurre hacer una tabla con los repetidos y despues realizar un nose LEft outer join o right outer join con la tabla original y el resultado de esto llenar una tercer tabla. y esa tercer tabla ya no tendria los repetidos solo los que no se repiten y despues ya le paso los de la tabla de repetido.


y lo que nose es que utilizar para obtener la tabla que no tenga registros repetidos si funcionara el left outer join o right join o si existe otras funciones que me puedan ayudar

ecfisa 01-04-2011 08:08:51

Hola amerika111.

Revisá estos enlaces del foro:

Eliminar Duplicados ¿?

Eliminar Registros Duplicados ?

Eliminar info duplicada/tripicada en algunos campos

Un saludo.

duilioisola 01-04-2011 15:44:45

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.

Casimiro Noteví 01-04-2011 17:27:04

El '>=2' también puedes sustituirlo por '>1'


La franja horaria es GMT +2. Ahora son las 23:03:55.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi