Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Atualizando uma tabela de outra tabela com várias colunas no sqlalchemy


Eu não acho que você pode. Portanto, isso não é realmente uma resposta, mas é muito longo para um comentário.

Você pode facilmente compor sua consulta com 2 colunas (acho que você já sabia disso):
select_query = select([table2.c.col1, table2.c.col2]).where(table1.c.key == table2.c.key)

e depois você pode usar o 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)

Mas como você vê na instrução de atualização, você estará efetivamente fazendo duas seleções. (Desculpe, não adaptei a saída completamente ao seu exemplo, mas tenho certeza que você entendeu).

Não tenho certeza se, como você diz, MySQL será inteligente o suficiente para torná-lo uma consulta apenas. Eu acho. Espero que ajude de qualquer maneira.