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

borrar registro de determinada posicion

Estas en el tema de borrar registro de determinada posicion en el foro de Mysql en Foros del Web. Hola a todos, tengo varios registros iguales en una tabla y necesito borrar los duplicados y quedarme solo con el que primero fue insertado, el ...
  #1 (permalink)  
Antiguo 11/07/2016, 07:00
 
Fecha de Ingreso: diciembre-2007
Mensajes: 299
Antigüedad: 16 años, 11 meses
Puntos: 2
borrar registro de determinada posicion

Hola a todos,
tengo varios registros iguales en una tabla y necesito borrar los duplicados y quedarme solo con el que primero fue insertado, el problema es que no se como borrarlos pues no tengo ningun indice o similar para WHERE:

nombre puntuacion
-------------------
alex 25
carlos 54
raul 23
alex 25
sergio 28

Hay alguna forma de borrar el 2º alex sin que afecte al 1º? LIMIT 3,1??mediante una subquery que me devuelva una fila con el segundo "alex"??
__________________
1os pasaos con xAMP en Windows
programando en PERL

Última edición por alfa18; 11/07/2016 a las 07:48
  #2 (permalink)  
Antiguo 11/07/2016, 08:36
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 10 meses
Puntos: 447
Respuesta: borrar registro de determinada posicion

Hola alfa18:

Lamentablemente no podrás hacer lo que quieres de una manera "simple", lo que puedes hacer es utilizar una tabla "temporal" en donde pases sólo los datos que te interesan con un SELECT-DISTINCT y después eliminar la tabla "original" y renombrar la tabla temporal, es decir, algo así:

Código MySQL:
Ver original
  1. mysql> CREATE TABLE tabla (nombre VARCHAR(10), puntuacion INT);
  2. Query OK, 0 rows affected (0.25 sec)
  3.  
  4. mysql> CREATE TABLE temporal (nombre VARCHAR(10), puntuacion INT);
  5. Query OK, 0 rows affected (0.23 sec)
  6.  
  7. mysql> INSERT INTO tabla VALUES
  8.     -> ('alex', 25), ('carlos', 54), ('raul', 23),('alex', 25), ('sergio', 28);
  9. Query OK, 5 rows affected (0.04 sec)
  10. Records: 5  Duplicates: 0  Warnings: 0
  11.  
  12. mysql> SELECT * FROM tabla;
  13. +--------+------------+
  14. | nombre | puntuacion |
  15. +--------+------------+
  16. | alex   |         25 |
  17. | carlos |         54 |
  18. | raul   |         23 |
  19. | alex   |         25 |
  20. | sergio |         28 |
  21. +--------+------------+
  22. 5 rows in set (0.00 sec)
  23.  
  24. mysql> INSERT INTO temporal
  25.     -> SELECT DISTINCT nombre, puntuacion FROM tabla;
  26. Query OK, 4 rows affected (0.07 sec)
  27. Records: 4  Duplicates: 0  Warnings: 0
  28.  
  29. mysql> SELECT * FROM temporal;
  30. +--------+------------+
  31. | nombre | puntuacion |
  32. +--------+------------+
  33. | alex   |         25 |
  34. | carlos |         54 |
  35. | raul   |         23 |
  36. | sergio |         28 |
  37. +--------+------------+
  38. 4 rows in set (0.00 sec)
  39.  
  40. mysql> DROP TABLE tabla;
  41. Query OK, 0 rows affected (0.13 sec)
  42.  
  43. mysql> RENAME TABLE temporal TO tabla;
  44. Query OK, 0 rows affected (0.11 sec)
  45.  
  46. mysql> SELECT * FROM tabla;
  47. +--------+------------+
  48. | nombre | puntuacion |
  49. +--------+------------+
  50. | alex   |         25 |
  51. | carlos |         54 |
  52. | raul   |         23 |
  53. | sergio |         28 |
  54. +--------+------------+
  55. 4 rows in set (0.00 sec)

Recuerda respaldar tu BD antes de cualquier intento.

Haz la prueba y nos comentas.

Saludos
Leo.
  #3 (permalink)  
Antiguo 11/07/2016, 09:00
 
Fecha de Ingreso: diciembre-2007
Mensajes: 299
Antigüedad: 16 años, 11 meses
Puntos: 2
Respuesta: borrar registro de determinada posicion

gracias leonardo asi fue como lo hice, mediante una tabla temporal y copiando en ella los registros que me interesan de la tabla original para mas tarde borrar la tabla original y renombrar la temporal a la original.

queria saber si podia hacerlo con una sola instruccion pero no parece q se pueda, un saludo y gracias por tu ayuda:D
__________________
1os pasaos con xAMP en Windows
programando en PERL

Etiquetas: posicion, registro, registros, tabla
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 13:43.