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

No se borra?

Estas en el tema de No se borra? en el foro de Mysql en Foros del Web. veamos, tengo una tabla llamada ultimahora creada con tres columnas (codUltimaHora,contenido,f_publicado). y QUIERO BORRAR LA MAS ANTIGUA. Para lo que hago: Código: delete from ultimahora ...
  #1 (permalink)  
Antiguo 12/05/2006, 01:51
 
Fecha de Ingreso: mayo-2006
Mensajes: 14
Antigüedad: 18 años
Puntos: 0
No se borra?

veamos, tengo una tabla llamada ultimahora creada con tres columnas (codUltimaHora,contenido,f_publicado).

y QUIERO BORRAR LA MAS ANTIGUA. Para lo que hago:

Código:
delete from ultimahora where codUltimaHora = (
select codUltimaHora from ultimahora where
datediff(curdate(),f_publicado)
from ultimahora);
esto, me dice "You can´t specify target table 'ultimahora' for update in FROM clause".

que os parece?
  #2 (permalink)  
Antiguo 12/05/2006, 07:07
Avatar de dacmonsalve  
Fecha de Ingreso: noviembre-2005
Ubicación: Colombia Tierra querida, himno de fe y armonia
Mensajes: 318
Antigüedad: 18 años, 5 meses
Puntos: 6
Cita:
Iniciado por txemekle
Código:
delete from ultimahora where codUltimaHora = (
select codUltimaHora from ultimahora where
datediff(curdate(),f_publicado)
from ultimahora);
Resulta que el subquery has declarado dos veces la sentencia "from ultimahora" quita el ultimo asi:
Código:
delete from ultimahora where codUltimaHora = (
select codUltimaHora from ultimahora where
datediff(curdate(),f_publicado));
creo que asi debe funcionar..

...SALUDOS..
__________________
La mayor frustración es saber todas las respuestas,
pero que nadie te haga las preguntas
:Zzz:
.
  #3 (permalink)  
Antiguo 12/05/2006, 07:29
 
Fecha de Ingreso: abril-2006
Mensajes: 268
Antigüedad: 18 años
Puntos: 2
Parece ser que mysql no permite que la tabla que estas actulizando se utilice en una subconsulta.
Por otro lado, no entiendo lo que queres hacer con datediff, ya que no comparás su resultado con nada. Si explicaras como obtener el registro más antiguo quiza te podamos ayudar un poco más.

Considerando que la más antigua es la que tiene el f_publicado más bajo, podrías hacer algo asi:

DELETE FROM ultimahora ORDER BY f_publicado ASC LIMIT 1

Con el ORDER BY f_publicado ASC ordenamos la consulta segun f_publicado de menor a mayor y con el LIMIT 1 le indicamos que borre sólo un registro (el primero).

Saludos.
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 21:49.