sql >> Base de Datos >  >> RDS >> Mysql

Actualización de una tabla desde otra tabla con varias columnas en sqlalchemy

No creo que puedas. Por lo tanto, esta no es realmente una respuesta, pero es demasiado larga para un comentario.

Puede redactar fácilmente su consulta con 2 columnas (supongo que ya lo sabía):

select_query = select([table2.c.col1, table2.c.col2]).where(table1.c.key == table2.c.key)

y luego puedes usar el método with_only_columns() , consulte api :

In[52]: print(table.update().values(col1 = select_query.with_only_columns([table2.c.col1]), col2 = select_query.with_only_columns([table2.c.col2])))
UPDATE table SET a=(SELECT tweet.id 
FROM tweet 
WHERE tweet.id IS NOT NULL), b=(SELECT tweet.user_id 
FROM tweet 
WHERE tweet.id IS NOT NULL)

Pero como puede ver en la declaración de actualización, estará haciendo efectivamente dos selecciones. (Lo siento, no adapté la salida completamente a tu ejemplo, pero estoy seguro de que entiendes la idea).

No estoy seguro si, como dices, MySQL será lo suficientemente inteligente como para que sea una sola consulta. Supongo que sí. Espero que ayude de todos modos.