Vamos a lo básico: Lo que dices estar intentando es realizar un UPDATE sobre el resutlado de una subconsulta.
Según entiendo, la idea sería algo como
Código SQL:
Ver originalUPDATE (SELECT a, b, c, d FROM tabla) t1
SET T1.a =
WHERE T1.c = xxx
Bueno, eso por empezar es ilegal. No puedes hacer en ningún DBMS que yo maneje, un UPDATE sobre una tabla derivada, por la más simple razón de todas: No existe esa tabla.
Una tabla derivada no tiene existencia real. Es un conjunto de datos en el buffer de consultas, y no una tabla en memoria. Son cosas totalmente diferentes.
Una tabla en memoria es una tabla declarada sobre el motor MEMORY, o bien una tabla creada comol TEMPORARY, esto en MySQL). Ambos tipos de tabla existen en el diccionario de datos, y por consecuencia tienen reservado un espacio de tablas.
No es el caso de una tabla derivada. Esta es un resultado en un buffer de solo lectura, y no permite actualización. Son los datos que el cliente lee, o datos sobre los que se aplican otros niveles de lectura (select dfe select), para volver a ponerlos en el buffer.
Precisamente por esa razón te pedi que pusieras la query que estás usando,
y ninguna query supuesta como la que pusiste sirve, ya que no representa lo que quieres lograr.
Postea la query
real. Partiremos de alli para entender la solución.
Pero no pongas una query simulada ni "parecida". Si no vemos lo que estás haciendo tendremos que hacer muchísimas suposiciones, de las cuales probablemente no sirva ninguna.