Es posible que en algunas oportunidades necesitemos hacer una actualización a una tabla en donde la clave a utilizar en el where nos sea desconocida, y que sólo podamos obtenerla partiendo de una segunda clave en una segunda tabla.
El truco para esto es utilizar subconsultas.
Lo más probable es que al pensar en esto, escriban un ejemplo como el siguiente:
UPDATE
tabla1
SET
campo = 'nuevo_valor'
WHERE
campo_de_referencia = (
SELECT
tabla1.valor
FROM
tabla1,
tabla2
WHERE
tabla1.campo = 'viejo_valor'
AND
tabla1.clave_primaria = tabla2.clave_foranea
AND
tabla2.campo_de_referencia = 'otro_valor'
)
;
Lamentablemente, esto no va a funcionar y van a obtener el siguiente error.
You can't specify target table 'tabla1' for update in FROM clause
Seguir leyendo «Update con Subselect en Mysql»