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

Eliminar duplicados.

Estas en el tema de Eliminar duplicados. en el foro de PostgreSQL en Foros del Web. Hay alguna forma de eliminar duplicados en una bbdd postgres... Que si hay dos o mas registros iguales solo deje uno. Gracias....
  #1 (permalink)  
Antiguo 27/07/2009, 11:58
 
Fecha de Ingreso: octubre-2008
Ubicación: Madrid
Mensajes: 352
Antigüedad: 16 años, 2 meses
Puntos: 5
Eliminar duplicados.

Hay alguna forma de eliminar duplicados en una bbdd postgres...
Que si hay dos o mas registros iguales solo deje uno.
Gracias.
  #2 (permalink)  
Antiguo 27/07/2009, 13:08
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 10 meses
Puntos: 360
Respuesta: Eliminar duplicados.

Un ejemplo vale mas que 1000 palabras.



Código sql:
Ver original
  1. pruebas=# CREATE TABLE repetidos(id INTEGER);
  2. CREATE TABLE
  3. pruebas=# INSERT INTO repetidos VALUES(1);
  4. INSERT 0 1
  5. pruebas=# INSERT INTO repetidos VALUES(2);
  6. INSERT 0 1
  7. pruebas=# INSERT INTO repetidos VALUES(3);
  8. INSERT 0 1
  9. pruebas=# INSERT INTO repetidos VALUES(1);
  10. INSERT 0 1
  11. pruebas=# INSERT INTO repetidos VALUES(2);
  12. INSERT 0 1
  13. pruebas=# INSERT INTO repetidos VALUES(4);
  14. INSERT 0 1
  15. pruebas=# INSERT INTO repetidos VALUES(5);
  16. INSERT 0 1
  17. pruebas=# SELECT *FROM repetidos;
  18.  id
  19. ----
  20.   1
  21.   2
  22.   3
  23.   1
  24.   2
  25.   4
  26.   5
  27. (7 filas)
  28.  
  29. pruebas=# SELECT DISTINCT * FROM repetidos;
  30.  id
  31. ----
  32.   1
  33.   2
  34.   3
  35.   4
  36.   5
  37. (5 filas)
  38.  
  39. pruebas=# CREATE TABLE temporal AS SELECT DISTINCT *FROM repetidos;
  40. SELECT
  41. pruebas=# SELECT *FROM temporal;
  42.  id
  43. ----
  44.   1
  45.   2
  46.   3
  47.   4
  48.   5
  49. (5 filas)
  50.  
  51. pruebas=# DELETE FROM repetidos;
  52. DELETE 7
  53. pruebas=# INSERT INTO repetidos SELECT *FROM temporal;
  54. INSERT 0 5
  55. pruebas=# DROP TABLE temporal;
  56. DROP TABLE
  57. pruebas=# SELECT *FROM repetidos;
  58.  id
  59. ----
  60.   1
  61.   2
  62.   3
  63.   4
  64.   5
  65. (5 filas)
  66.  
  67. pruebas=#
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 27/07/2009, 14:45
 
Fecha de Ingreso: julio-2009
Mensajes: 17
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Eliminar duplicados.

hola que tal soy aprediz de php y quisiera saber si podrias dar otro ejemplo mas facil con respecto a que no haya duplicados en una tabla con registros te lo agradecere mucho saludos!!
  #4 (permalink)  
Antiguo 27/07/2009, 15:30
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 10 meses
Puntos: 360
Respuesta: Eliminar duplicados.

jose nirvana... el ejemplo es elemental pero te voy a explicar el procedimiento a seguir para corregir esto.

* En el ejemplo inserto 7 registros, 2 de los cuales se encuentran repetidos (El 1 y el 2).
* pruebas=# create table temporal as select distinct *from repetidos;
Esta sentencia crea una tabla temporal y la llena con el resultado de una consulta. Si te
fijas, la consulta lleva antepuesta la palabra distinct, que sirve para establecer
registros únicos sin repetición en la consulta. Puedes ver que al ejecutar
select distinct *from repetidos; únicamente se muestran 5 registros.
* Despues de tener los registros sanos y salvos en la tabla temporal, se procede a borrar
los registros existentes en la tabla original.
* se llena la tabla original con el resultado de la tabla temporal con la sentencia
insert into repetidos select *from temporal; En este momento, la tabla original
(repetidos en este caso) ya tiene los registros sin repetición.
* Aca ya hemos cumplido el objetivo y para nada nos sirve la tabla temporal. es por eso
que se borra.

Espero te quede claro.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 28/07/2009, 11:03
 
Fecha de Ingreso: octubre-2008
Ubicación: Madrid
Mensajes: 352
Antigüedad: 16 años, 2 meses
Puntos: 5
Respuesta: Eliminar duplicados.

Muchas gracias....
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 07:35.