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.