sql >> Databasteknik >  >> RDS >> Mysql

Uppdatera en tabell från en annan tabell med flera kolumner i sqlalchemy

Jag tror inte att du kan. Detta är alltså inte riktigt ett svar, men det är alldeles för långt för en kommentar.

Du kan enkelt komponera din fråga med 2 kolumner (jag antar att du redan visste det):

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

och efteråt kan du använda metoden with_only_columns() , se 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)

Men som du ser från uppdateringsförklaringen kommer du effektivt att göra två val. (Tyvärr att jag inte anpassade resultatet helt till ditt exempel, men jag är säker på att du förstår idén).

Jag är inte säker på om, som du säger, MySQL kommer att vara smart nog att göra det bara till en fråga. Jag antar det. Hoppas det hjälper ändå.




  1. Använd den korrekta, eller att föredra, inte lika operatorn i MySQL

  2. Mysql-fallet fungerar inte

  3. Visa rader från MySQL där en datetime ligger inom den närmaste timmen

  4. Uppladdning av flera PHP-bilder och lagring till mapp och databas