| |||
Delete en una consulta Hola Tengo un problema , tengo esta consulta me funciona a la perfeccion pero ahora como hago para borrar todos los registros que esa consulta me bota?? , muchas gracias de ante mano. |
| |||
Respuesta: Delete en una consulta TODOS? Si tienes un identificador único es fácil
__________________ Quim -------------------------------------------------- Ayudar a ayudar es una buena práctica!!! Y da buenos resultados. |
| |||
Respuesta: Delete en una consulta Gracias de ante mano mira me sale un error no se si me puedes ayudar Última edición por gnzsoloyo; 12/02/2014 a las 10:44 |
| ||||
Respuesta: Delete en una consulta Ok. Si la query devuelve más de un registro, no podrás hacerlo por consola. Deberás crear un SP para eso.
__________________ ¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente... "El problema es la interfase silla-teclado." (Gillermo Luque) |
| |||
Respuesta: Delete en una consulta Hola videlxu: Lo que pretendes hacer en realidad es algo peligroso, una cosa es eliminar registros duplicados y otra cosas es eliminar TODO el contenido duplicado... ¿a qué me refiero con esto?, observa el siguiente ejemplo:
Código:
observa que en la tabla existen varios registros que se repiten, tanto en su id, como en su descripcion,mysql> SELECT * FROM tabla; +------+-------------+ | id | descripcion | +------+-------------+ | 1 | uno | | 2 | dos | | 3 | tres | | 1 | uno | | 5 | uno | | 1 | seis | | 2 | siete | | 2 | dos | +------+-------------+ 8 rows in set (0.00 sec) +------+-------------+ | id | descripcion | +------+-------------+ | 1 | uno | | 2 | dos | | 1 | uno | | 2 | dos | +------+-------------+ y además hay descripciones que se repiten, pero que tienen un id distinto: +------+-------------+ | id | descripcion | +------+-------------+ | 1 | uno | | 1 | uno | | 5 | uno | +------+-------------+ Tal como planteas tu consulta, te interesaría eliminar todos los nombres repetidos (independientemente de si tienen más campos distintos). partiendo de la consulta inicial algo como esto:
Código MySQL:
Ver original es decir, eliminarías 5 registros. Desde aquí me parece que tienes un error de concepto, porque tal como lo pones NO DEJARÍAS NINGUNA OCURRENCIA PARA LAS DESCRIPCIONES UNO Y DOS... lo que usualmente se hace es dejar sólo una de las descripciones y eliminar el resto, pero como esto no es lo que propones, no me voy a entretener en indicarte cómo sería el procedimiento. Hay una manera en que creo que podrías hacer lo que quieres, y sería utilizando INNER JOIN, sería algo así:
Código MySQL:
Ver original De esta manera, eliminas los cinco registros que estaban duplicados. Dale un vistazo para ver si es lo que necesitas- Saludos Leo |
| ||||
Respuesta: Delete en una consulta No nos olvidemos que en MySQL no puedes consultar y borrar la misma tabla en la misma consulta. De allí la sugerencia de usar un SP, que permita iterar las duplicidades, ya que permitiría no borrar las que no se debe...
__________________ ¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente... "El problema es la interfase silla-teclado." (Gillermo Luque) |
| |||
Respuesta: Delete en una consulta Cita: Cita: Hola gracias por tu ayuda , probare lo que me dices, el id de mis registros es unico tengo un campo que se llama cod_alu y es ese que el que se repite y quiero eliminar todos sin excepcion todos esos registros que se repiten me refiero al campo cod_alu, muchas gracias de ante mano.
Iniciado por leonardo_josue Hola videlxu: Lo que pretendes hacer en realidad es algo peligroso, una cosa es eliminar registros duplicados y otra cosas es eliminar TODO el contenido duplicado... ¿a qué me refiero con esto?, observa el siguiente ejemplo:
Código:
observa que en la tabla existen varios registros que se repiten, tanto en su id, como en su descripcion,mysql> SELECT * FROM tabla; +------+-------------+ | id | descripcion | +------+-------------+ | 1 | uno | | 2 | dos | | 3 | tres | | 1 | uno | | 5 | uno | | 1 | seis | | 2 | siete | | 2 | dos | +------+-------------+ 8 rows in set (0.00 sec) +------+-------------+ | id | descripcion | +------+-------------+ | 1 | uno | | 2 | dos | | 1 | uno | | 2 | dos | +------+-------------+ y además hay descripciones que se repiten, pero que tienen un id distinto: +------+-------------+ | id | descripcion | +------+-------------+ | 1 | uno | | 1 | uno | | 5 | uno | +------+-------------+ Tal como planteas tu consulta, te interesaría eliminar todos los nombres repetidos (independientemente de si tienen más campos distintos). partiendo de la consulta inicial algo como esto:
Código MySQL:
Ver original es decir, eliminarías 5 registros. Desde aquí me parece que tienes un error de concepto, porque tal como lo pones NO DEJARÍAS NINGUNA OCURRENCIA PARA LAS DESCRIPCIONES UNO Y DOS... lo que usualmente se hace es dejar sólo una de las descripciones y eliminar el resto, pero como esto no es lo que propones, no me voy a entretener en indicarte cómo sería el procedimiento. Hay una manera en que creo que podrías hacer lo que quieres, y sería utilizando INNER JOIN, sería algo así:
Código MySQL:
Ver original De esta manera, eliminas los cinco registros que estaban duplicados. Dale un vistazo para ver si es lo que necesitas- Saludos Leo |
| |||
Respuesta: Delete en una consulta En todo caso si no se puede borrar registros con SELECT sin SP entonces se podria pasar los registros que no son duplicados a otra tabla?, ojo solo pasando los registros que no son duplicados no me interesa que un registro duplicado se pase, muchas gracias de ante mano. |
Etiquetas: |