Cita: nunca he echo una subconsulta en update y crei que la sintaxis era igual que en los select
Primero, no creas nada que no te asegures previamente en el manual de referencia. Para eso existen.
Segundo: No es opcional. MySQL
no admite hacer un UPDATE sobre la misma tabla que haces el SELECT. Simplemente no te dejará, sin importar de qué forma lo intentes. es una restricción del DBMS que existe por seguridad de procesos.
Digamoslo así: Es para evitar cortar la rama en la que estás parado.
Si estuvieras actualizando el mismo campo que usas para buscar el registro, ¿en qué estado está? ¿Cuál es el valor al momento de ejecutarse? ¿Contiene el valor nuevo, o el que tenía?
Si lo piensas, es una situación insegura.
Por esa misma razón, no se perite tampoco borrar y consultar la misma tabla en la misma sentencia.
Existen algunos DBMS que si tienen implementado esa posibilidad, pero lo hacen dentro de un proceso en que se genera un registro o tabla en memoria que contiene los cambios, al estilo de lo que en MySQL se implementa para eso con un stored procedure.
Si quieres hacerlo, te recomiendo usar SP.