you update specify safety from for error delete clientes mysql sql select subquery mysql-error-1093

mysql - safety - you can t specify target table clientes for update in from clause



MySQL#1093-No se puede especificar la tabla de objetivos ''regalos'' para la actualización en la cláusula FROM (6)

Esto se debe a que su actualización podría ser cíclica ... ¿Qué ocurre si la actualización de ese registro hace que ocurra algo que hace que la condición WHERE FALSE ? Sabes que no es el caso, pero el motor no. También podría haber bloqueos opuestos sobre la mesa en la operación.

Pensaría que podrías hacerlo así (no probado):

UPDATE giveaways SET winner = ''1'' ORDER BY id DESC LIMIT 1

Lee mas

Lo intenté:

UPDATE giveaways SET winner = ''1'' WHERE ID = (SELECT MAX(ID) FROM giveaways)

Pero da:

# 1093 - No puede especificar los ''regalos'' de la tabla de objetivos para la actualización en la cláusula FROM

Este artículo parece relevante pero no puedo adaptarlo a mi consulta. ¿Cómo puedo hacer que funcione?


Haga uso de la TABLA TEMP:

como sigue:

UPDATE TABLE_NAME SET TABLE_NAME.IsActive=TRUE WHERE TABLE_NAME.Id IN ( SELECT Id FROM TEMPDATA ); CREATE TEMPORARY TABLE TEMPDATA SELECT MAX(TABLE_NAME.Id) as Id FROM TABLE_NAME GROUP BY TABLE_NAME.IncidentId; SELECT * FROM TEMPDATA; DROP TABLE TEMPDATA;


Primero puede crear una vista de la subconsulta y actualizar / eliminar la selección de la vista. Solo recuerde dejar caer la vista después.


Según la información del artículo que vinculó a esto debería funcionar:

update giveaways set winner=''1'' where Id = (select Id from (select max(Id) as id from giveaways) as t)


create table GIVEAWAYS_NEW as(select*from giveaways); update giveaways set winner=1 where Id=(select max(Id)from GIVEAWAYS_NEW);


update giveaways set winner=1 where Id = (select*from (select max(Id)from giveaways)as t)