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

Eliminar registros segun otro registro

Estas en el tema de Eliminar registros segun otro registro en el foro de Mysql en Foros del Web. Hola estimados: Tengo una tabla con una id donde inserto registros "temporales" usando una id negativa, por ejemplo id info 2 john 3 james 4 ...
  #1 (permalink)  
Antiguo 01/07/2013, 08:52
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Eliminar registros segun otro registro

Hola estimados:

Tengo una tabla con una id donde inserto registros "temporales" usando una id negativa, por ejemplo

id info
2 john
3 james
4 johnny
5 jeremy
6 jimmy
-5 jeremy
-3 james

donde los registros -5 y -3 son registros temporales modificados.

Lo que intento hacer es eliminar los registros positivos que tengan su respectivo negativo, o sea eliminar los registros 3 y 5, para lo que hice esta consulta:

Código MySQL:
Ver original
  1. DELETE FROM tabla   WHERE id IN (SELECT -id FROM tabla WHERE id<0)

Pensaba que todo iría bien, sin embargo me da este mensaje de error:

#1093 - You can't specify target table 'table' for update in FROM clause

supongo que no puedo eliminar registros leyendo la misma tabla que estoy eliminando

Como lo harían ustedes?

Gracias por su ayuda!
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #2 (permalink)  
Antiguo 01/07/2013, 09:39
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Eliminar registros segun otro registro

Yo te recomendaría usar una tabla temporal para los cambios. Es mas simple, o en todo caso una transaccional, que te permitiría mantener la trazabilidad de los cambios
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 01/07/2013, 13:19
Avatar de iandrade  
Fecha de Ingreso: septiembre-2006
Ubicación: Xalapa, Veracruz, MÉXICO.
Mensajes: 171
Antigüedad: 17 años, 6 meses
Puntos: 6
Respuesta: Eliminar registros segun otro registro

Coincido con gnzsoloyo, para resolver tu problema define un alias para la segunda tabla es decir
Código mysql:
Ver original
  1. DELETE FROM tabla   WHERE id IN (SELECT t1.id FROM tabla as t1 WHERE id<0)
__________________
No todo lo que se hace en segundo plano es AJAX

Etiquetas: insert, registro, registros, select, 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 04:11.