Mysql
 sql >> Database >  >> RDS >> Mysql

Aggiornamento di una tabella da un'altra tabella con più colonne in sqlalchemy

Non credo che tu possa. Quindi, questa non è davvero una risposta, ma è troppo lunga per un commento.

Puoi facilmente comporre la tua query con 2 colonne (suppongo che lo sapessi già):

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

e successivamente puoi usare il metodo with_only_columns() , vedi 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)

Ma come vedi dalla dichiarazione di aggiornamento, farai effettivamente due selezioni. (Scusa se non ho adattato completamente l'output al tuo esempio, ma sono sicuro che l'idea ti sia venuta).

Non sono sicuro se, come dici tu, MySQL sarà abbastanza intelligente da farne una sola query. Credo di si. Spero che aiuti comunque.