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å.