Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » PostgreSQL »

Eliminar uno solo de los registros duplicados

Estas en el tema de Eliminar uno solo de los registros duplicados en el foro de PostgreSQL en Foros del Web. HOLA A TODOS tengo una tabla que no tiene un primary key definido, en ella se presentan registros repetidos (2), yo necesito eliminar uno de ...
  #1 (permalink)  
Antiguo 06/04/2010, 11:25
Avatar de webness  
Fecha de Ingreso: enero-2009
Ubicación: BOGOTA
Mensajes: 312
Antigüedad: 8 años, 11 meses
Puntos: 5
Pregunta Eliminar uno solo de los registros duplicados

HOLA A TODOS tengo una tabla que no tiene un primary key definido, en ella se presentan registros repetidos (2), yo necesito eliminar uno de estos y dejar el otro.

la primera opcion que estoy tratando es un SP donde obtengo todos aquellos registros repetidos y despues recorrer el query y borrar el primero de los registros obtenidos y obviar el segundo, y asi hasta acabar, el asunto es que el id esta repetido entonces al momento de borrar, se borraria todos los registros repetidos.

Que idea o metodo pueden aportar???, gracias
  #2 (permalink)  
Antiguo 06/04/2010, 11:46
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.972
Antigüedad: 8 años, 10 meses
Puntos: 354
Respuesta: Eliminar uno solo de los registros duplicados

Hola webness

Yo me apoyaría en una tabla temporal para limpiar los registros haciendo uso de distinct o group by.

Ya con los registros limpios, borraría todo el contenido de la tabla original y luego con un insert into select copiaría los registros limpios de nuevo a la tabla.

Te sirve así?
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 06/04/2010, 11:50
Avatar de webness  
Fecha de Ingreso: enero-2009
Ubicación: BOGOTA
Mensajes: 312
Antigüedad: 8 años, 11 meses
Puntos: 5
Respuesta: Eliminar uno solo de los registros duplicados

ES DECIR

Código MySQL:
Ver original
  1. CREATE TABLE tabla_nueva AS SELECT DISTINCT * FROM tabla_vieja;
  2. DELETE FROM tabla_vieja;
  3. INSERT INTO tabla_vieja VALUES (........)  AS SELECT * FROM tabla_nueva

???
  #4 (permalink)  
Antiguo 06/04/2010, 11:51
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.972
Antigüedad: 8 años, 10 meses
Puntos: 354
Respuesta: Eliminar uno solo de los registros duplicados

Con una pequeña corrección

Código SQL:
Ver original
  1. CREATE TABLE tabla_nueva AS SELECT DISTINCT * FROM tabla_vieja;
  2. DELETE FROM tabla_vieja;
  3. INSERT INTO tabla_vieja SELECT * FROM tabla_nueva
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 06/04/2010, 11:53
Avatar de webness  
Fecha de Ingreso: enero-2009
Ubicación: BOGOTA
Mensajes: 312
Antigüedad: 8 años, 11 meses
Puntos: 5
Respuesta: Eliminar uno solo de los registros duplicados

perfecto gracias.

Etiquetas: duplicados, eliminar, registros
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:35.