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

Eliminar campos repetidos

Estas en el tema de Eliminar campos repetidos en el foro de Mysql en Foros del Web. Como se puede se puede eliminar todos los campos que tengan nombres duplicados, pero que solo deje uno solo. Ejemplo: 1 ForodelWeb 2 ForodelWeb 3 ...
  #1 (permalink)  
Antiguo 26/11/2010, 09:27
 
Fecha de Ingreso: marzo-2010
Mensajes: 432
Antigüedad: 14 años, 1 mes
Puntos: 11
Eliminar campos repetidos

Como se puede se puede eliminar todos los campos que tengan nombres duplicados, pero que solo deje uno solo.

Ejemplo:

1 ForodelWeb
2 ForodelWeb
3 ForodelWeb
4 ForodelWeb

Ejecuto sentencia:

Solo queda: 1 ForodelWeb


Estaba probando con esto pero solo las identifica:

Código MySQL:
Ver original
  1. SELECT  nombre,COUNT(*) as nombre
  2. FROM prueba
  3. GROUP BY nombre

Tengo esta base de datos:

Base datos: `test1`;

Código MySQL:
Ver original
  1. CREATE TABLE `prueba` (
  2.   `Id` int(11) NOT NULL AUTO_INCREMENT,
  3.   `nombre` varchar(100) DEFAULT NULL,
  4.   PRIMARY KEY (`Id`)
  5.  
  6.  
  7. INSERT INTO `prueba` VALUES (1,'Konami');
  8. INSERT INTO `prueba` VALUES (2,'Konami, Hudson JP');
  9. INSERT INTO `prueba` VALUES (3,'Konami, Yuke\'s');
  10. INSERT INTO `prueba` VALUES (4,'Krome Studios');
  11. INSERT INTO `prueba` VALUES (5,'Kuju Entertainment');
  12. INSERT INTO `prueba` VALUES (6,'Kush Games');
  13. INSERT INTO `prueba` VALUES (7,'Left Field Productions');
  14. INSERT INTO `prueba` VALUES (8,'Lexicon Entertainment');
  15. INSERT INTO `prueba` VALUES (9,'Lionhead Studios');
  16. INSERT INTO `prueba` VALUES (10,'Liquid Dragon Studios');
  17. INSERT INTO `prueba` VALUES (11,'Liquid Entertainment');
  18. INSERT INTO `prueba` VALUES (12,'LucasArts');
  19. INSERT INTO `prueba` VALUES (13,'Luxoflux');
  20. INSERT INTO `prueba` VALUES (14,'Mad Doc Software');
  21. INSERT INTO `prueba` VALUES (15,'Majesco');
  22. INSERT INTO `prueba` VALUES (16,'Marvelous Interactive');
  23. INSERT INTO `prueba` VALUES (17,'Marvelous Interactive');
  24. INSERT INTO `prueba` VALUES (18,'Marvelous InteractiveJP');
  25. INSERT INTO `prueba` VALUES (19,'Mass Media');
  26. INSERT INTO `prueba` VALUES (20,'Massive Entertainment');
  27. INSERT INTO `prueba` VALUES (21,'Masterpiece');
  28. INSERT INTO `prueba` VALUES (22,'MAXUM Games');
  29. INSERT INTO `prueba` VALUES (23,'Microsoft Game Studios');
  30. INSERT INTO `prueba` VALUES (24,'Midway Games');
  31. INSERT INTO `prueba` VALUES (25,'Midway Games, SuccessJP');
  32. INSERT INTO `prueba` VALUES (26,'Midway Studios - Los Angeles');
  33. INSERT INTO `prueba` VALUES (27,'Mindware Studios');
  34. INSERT INTO `prueba` VALUES (28,'Mistwalker');
  35. INSERT INTO `prueba` VALUES (29,'Monolith Productions');
  36. INSERT INTO `prueba` VALUES (30,'Monolith Studios');
  37. INSERT INTO `prueba` VALUES (31,'Konami');
  38. INSERT INTO `prueba` VALUES (32,'Konami');
  39. INSERT INTO `prueba` VALUES (33,'Konami');
  40. INSERT INTO `prueba` VALUES (34,'Konami');
  41. INSERT INTO `prueba` VALUES (35,'Konami');
  42. INSERT INTO `prueba` VALUES (36,'Konami');
  43. INSERT INTO `prueba` VALUES (37,'Konami');
  44. INSERT INTO `prueba` VALUES (38,'Konami');
  45. INSERT INTO `prueba` VALUES (39,'Konami');
  46. INSERT INTO `prueba` VALUES (40,'Konami');
  47. INSERT INTO `prueba` VALUES (41,'Konami');
  48. INSERT INTO `prueba` VALUES (42,'Konami');
  49. INSERT INTO `prueba` VALUES (43,'Konami');
  50. INSERT INTO `prueba` VALUES (44,'Konami');
  51. INSERT INTO `prueba` VALUES (45,'Konami');
  52. INSERT INTO `prueba` VALUES (46,'Konami');
  53. INSERT INTO `prueba` VALUES (47,'Konami');
  54. INSERT INTO `prueba` VALUES (48,'LucasArts');
  55. INSERT INTO `prueba` VALUES (49,'Luxoflux');
  56. INSERT INTO `prueba` VALUES (50,'LucasArts');
  57. INSERT INTO `prueba` VALUES (51,'Luxoflux');
  58. INSERT INTO `prueba` VALUES (52,'LucasArts');
  59. INSERT INTO `prueba` VALUES (53,'Luxoflux');
  60. INSERT INTO `prueba` VALUES (54,'LucasArts');
  61. INSERT INTO `prueba` VALUES (55,'Luxoflux');
  62. INSERT INTO `prueba` VALUES (56,'LucasArts');
  63. INSERT INTO `prueba` VALUES (57,'Luxoflux');
  64. INSERT INTO `prueba` VALUES (58,'Marvelous Interactive');
  65. INSERT INTO `prueba` VALUES (59,'Marvelous Interactive');
  66. INSERT INTO `prueba` VALUES (60,'Marvelous Interactive');
  67. INSERT INTO `prueba` VALUES (61,'Marvelous Interactive');
  68. INSERT INTO `prueba` VALUES (62,'Marvelous Interactive');
  69. INSERT INTO `prueba` VALUES (63,'Marvelous Interactive');
  70. INSERT INTO `prueba` VALUES (64,'Marvelous Interactive');
  71. INSERT INTO `prueba` VALUES (65,'Marvelous Interactive');
  72. INSERT INTO `prueba` VALUES (66,'Microsoft Game Studios');
  73. INSERT INTO `prueba` VALUES (67,'Microsoft Game Studios');
  74. INSERT INTO `prueba` VALUES (68,'Microsoft Game Studios');
  75. INSERT INTO `prueba` VALUES (69,'Microsoft Game Studios');
  76. INSERT INTO `prueba` VALUES (70,'Microsoft Game Studios');
  77. INSERT INTO `prueba` VALUES (71,'Microsoft Game Studios');
  78. INSERT INTO `prueba` VALUES (72,'Kush Games');
  79. INSERT INTO `prueba` VALUES (73,'Kush Games');
  80. INSERT INTO `prueba` VALUES (74,'Kush Games');
  81. INSERT INTO `prueba` VALUES (75,'Kush Games');
  82. INSERT INTO `prueba` VALUES (76,'Kush Games');
  83. INSERT INTO `prueba` VALUES (77,'Kush Games');
  84. INSERT INTO `prueba` VALUES (78,'Kush Games');
  85. INSERT INTO `prueba` VALUES (79,'Kush Games');
  86. INSERT INTO `prueba` VALUES (80,'Kush Games');
  87. INSERT INTO `prueba` VALUES (81,'Kush Games');
  88. INSERT INTO `prueba` VALUES (82,'Kush Games');
  89. INSERT INTO `prueba` VALUES (83,'Kush Games');
  90. INSERT INTO `prueba` VALUES (84,'Kush Games');
  91. INSERT INTO `prueba` VALUES (85,'Kush Games');
  92. INSERT INTO `prueba` VALUES (86,'Kush Games');
  93. INSERT INTO `prueba` VALUES (87,'Kush Games');
  94. INSERT INTO `prueba` VALUES (88,'Kush Games');
  95. INSERT INTO `prueba` VALUES (89,'Kush Games');
  96. INSERT INTO `prueba` VALUES (90,'Kush Games');
  97. INSERT INTO `prueba` VALUES (91,'Kush Games');
  98. INSERT INTO `prueba` VALUES (92,'Kush Games');
  99. INSERT INTO `prueba` VALUES (93,'Kush Games');
  100. INSERT INTO `prueba` VALUES (94,'Kush Games');
  101. INSERT INTO `prueba` VALUES (95,'Kush Games');
  102. INSERT INTO `prueba` VALUES (96,'Kush Games');
  103. INSERT INTO `prueba` VALUES (97,'Kush Games');
  104. INSERT INTO `prueba` VALUES (98,'Kush Games');
  105. INSERT INTO `prueba` VALUES (99,'Kush Games');
  106. INSERT INTO `prueba` VALUES (100,'Kush Games');
  107. INSERT INTO `prueba` VALUES (101,'Kush Games');
  108. INSERT INTO `prueba` VALUES (102,'Kush Games');
  109. INSERT INTO `prueba` VALUES (103,'Kush Games');
  110. INSERT INTO `prueba` VALUES (104,'Kush Games');
  111. INSERT INTO `prueba` VALUES (105,'Kush Games');
  112. INSERT INTO `prueba` VALUES (106,'Kush Games');
  113. INSERT INTO `prueba` VALUES (107,'Kush Games');
  114. INSERT INTO `prueba` VALUES (108,'Kush Games');
  115. INSERT INTO `prueba` VALUES (109,'Kush Games');
  116. INSERT INTO `prueba` VALUES (110,'Kush Games');
  117. INSERT INTO `prueba` VALUES (111,'Kush Games');
  118. INSERT INTO `prueba` VALUES (112,'Kush Games');
  119. INSERT INTO `prueba` VALUES (113,'Kush Games');
  120. INSERT INTO `prueba` VALUES (114,'Kush Games');
  121. INSERT INTO `prueba` VALUES (115,'Kush Games');
  122. INSERT INTO `prueba` VALUES (116,'Kush Games');
  123. INSERT INTO `prueba` VALUES (117,'Kush Games');
  124. INSERT INTO `prueba` VALUES (118,'Kush Games');
  125. INSERT INTO `prueba` VALUES (119,'Kush Games');
  126. INSERT INTO `prueba` VALUES (120,'Massive Entertainment');
  127. INSERT INTO `prueba` VALUES (121,'Massive Entertainment');
  128. INSERT INTO `prueba` VALUES (122,'Massive Entertainment');
  129. INSERT INTO `prueba` VALUES (123,'Massive Entertainment');
  130. INSERT INTO `prueba` VALUES (124,'Massive Entertainment');
  131. INSERT INTO `prueba` VALUES (125,'Massive Entertainment');
  132. INSERT INTO `prueba` VALUES (126,'Massive Entertainment');
  133. INSERT INTO `prueba` VALUES (127,'Massive Entertainment');




Quedando como resultado esto, se eliminaron todos los demas duplicados quedando campos[nombre] sin repetidos:

Id nombre
1 Konami
2 Konami, Hudson JP
3 Konami, Yuke's
4 Krome Studios
5 Kuju Entertainment
6 Kush Games
7 Left Field Productions
8 Lexicon Entertainment
9 Lionhead Studios
10 Liquid Dragon Studios
11 Liquid Entertainment
12 LucasArts
13 Luxoflux
14 Mad Doc Software
15 Majesco
16 Marvelous Interactive
17 Marvelous InteractiveJP
18 Mass Media
19 Massive Entertainment
20 Masterpiece
21 MAXUM Games
22 Microsoft Game Studios
23 Midway Games
24 Midway Games, SuccessJP
25 Midway Studios - Los Angeles
26 Mindware Studios
27 Mistwalker
28 Monolith Productions
29 Monolith Studios

Última edición por tazzwt; 26/11/2010 a las 09:48
  #2 (permalink)  
Antiguo 26/11/2010, 09:50
 
Fecha de Ingreso: junio-2006
Ubicación: España
Mensajes: 122
Antigüedad: 17 años, 10 meses
Puntos: 2
Respuesta: Eliminar campos repetidos

hola, en las faq de mysql hay un ejemplo de lo que quieres hacer.
  #3 (permalink)  
Antiguo 26/11/2010, 10:02
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Eliminar campos repetidos

este es el tema del que habla lmerli
http://www.forosdelweb.com/f86/faqs-...1/#post3073309

Adicional a esto, debes hacerte una tabla temporal para vaciar los datos que genera la consulta que dice en el post. Despues borras toda la tabla y devuelves los datos.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #4 (permalink)  
Antiguo 26/11/2010, 14:24
 
Fecha de Ingreso: marzo-2010
Mensajes: 432
Antigüedad: 14 años, 1 mes
Puntos: 11
Respuesta: Eliminar campos repetidos

Con la consulta de huesos52 me ejecuta los registros que se repiten

En mi caso es:

SELECT * FROM prueba GROUP BY nombre HAVING count(*) > 1;


Ahora creo la tabla temporal:

Código MySQL:
Ver original
  1. CREATE TEMPORARY TABLE  `prueba` (
  2.   `Id` int(11) NOT NULL AUTO_INCREMENT,
  3.   `nombre` varchar(100) DEFAULT NULL,
  4.   PRIMARY KEY (`Id`)
  5. )
  6.  
  7.  
  8. select * from prueba

Esta vacia

Inserto los registros uno a uno generados por la consulta o existe alguna forma masiva para agregarlos todos a la tabla temporal.

Código MySQL:
Ver original
  1. INSERT INTO `prueba` VALUES (1,'Konami');
  #5 (permalink)  
Antiguo 26/11/2010, 14:27
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Eliminar campos repetidos

haz esto

Código SQL:
Ver original
  1. CREATE TABLE temporal_prueba
  2. AS
  3. SELECT * FROM prueba GROUP BY nombre HAVING COUNT(*) > 1;

En esta tabla ya quedan sin repetidos.

Despues borras todo de prueba.

Código SQL:
Ver original
  1. DELETE FROM prueba;

Posterior, vuelves a pasar los datos.

Código SQL:
Ver original
  1. INSERT INTO prueba SELECT *FROM temporal_prueba;

Por ultimo, borras temporal_prueba.

Código SQL:
Ver original
  1. DROP TABLE temporal_prueba;
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #6 (permalink)  
Antiguo 08/06/2011, 16:54
Avatar de FerraN10  
Fecha de Ingreso: junio-2011
Ubicación: Sant Joan Despí
Mensajes: 79
Antigüedad: 12 años, 10 meses
Puntos: 3
Mensaje Respuesta: Eliminar campos repetidos

Cita:
Iniciado por huesos52 Ver Mensaje
haz esto

Código SQL:
Ver original
  1. CREATE TABLE temporal_prueba
  2. AS
  3. SELECT * FROM prueba GROUP BY nombre HAVING COUNT(*) > 1;

En esta tabla ya quedan sin repetidos.

Despues borras todo de prueba.

Código SQL:
Ver original
  1. DELETE FROM prueba;

Posterior, vuelves a pasar los datos.

Código SQL:
Ver original
  1. INSERT INTO prueba SELECT *FROM temporal_prueba;

Por ultimo, borras temporal_prueba.

Código SQL:
Ver original
  1. DROP TABLE temporal_prueba;
Hola huesos52 . Entiendo la logica de lo que has comentado , para ayudar al compeñaero, tengo una duda.

Cuando haces:

Código SQL:
Ver original
  1. CREATE TABLE temporal_prueba
  2. AS
  3. SELECT * FROM prueba GROUP BY nombre HAVING COUNT(*) > 1;


Por defecto cojeria la estructura de la tabla prueba?
Tendria que crear yo la tabla manualmente con los campos?


Muchas gracias , es una duda que bueno me ha encendido una luz y me va de perlas.

Un Saludo
__________________
El fin de mi tarea no fue el fin sino el trayecto
Si vivir es la odisea el horizonte que clarea
En esta aldea parece perfecto así que bienvenido lo que sea
  #7 (permalink)  
Antiguo 08/06/2011, 20:59
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Eliminar campos repetidos

Si coge los tipos de datos. Pero no te pasa las llaves. primarias y foraneas.
Para este caso no es necesario que pasen llaves. Solo es una tabla que se usará como repositorio de los datos limpios.

saldos FerraN10
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #8 (permalink)  
Antiguo 09/06/2011, 07:20
Avatar de FerraN10  
Fecha de Ingreso: junio-2011
Ubicación: Sant Joan Despí
Mensajes: 79
Antigüedad: 12 años, 10 meses
Puntos: 3
Respuesta: Eliminar campos repetidos

okay lo entendi a la perfection mil gracias
Un saludo huesos52
__________________
El fin de mi tarea no fue el fin sino el trayecto
Si vivir es la odisea el horizonte que clarea
En esta aldea parece perfecto así que bienvenido lo que sea

Etiquetas: campos, eliminar, repetidos
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 19:27.