Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Aktualisieren einer Tabelle aus einer anderen Tabelle mit mehreren Spalten in sqlalchemy

Ich glaube nicht, dass du das kannst. Das ist also nicht wirklich eine Antwort, aber für einen Kommentar viel zu lang.

Sie können Ihre Abfrage ganz einfach mit 2 Spalten zusammenstellen (ich schätze, das wussten Sie bereits):

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

und danach können Sie die Methode with_only_columns() verwenden , siehe 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)

Aber wie Sie der Update-Anweisung entnehmen können, werden Sie effektiv zwei Auswahlen treffen. (Tut mir leid, dass ich die Ausgabe nicht vollständig an Ihr Beispiel angepasst habe, aber ich bin sicher, Sie verstehen die Idee).

Ich bin mir nicht sicher, ob, wie Sie sagen, MySQL wird schlau genug sein, es nur zu einer Abfrage zu machen. Ich denke schon. Hoffe es hilft trotzdem.