Не мисля, че можеш. Следователно това всъщност не е отговор, но е твърде дълго за коментар.
Можете лесно да съставите заявката си с 2 колони (предполагам, че вече знаете това):
select_query = select([table2.c.col1, table2.c.col2]).where(table1.c.key == table2.c.key)
и след това можете да използвате метода with_only_columns()
, вижте 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)
Но както виждате от изявлението за актуализация, вие ефективно ще правите два избора. (Съжалявам, че не адаптирах изхода напълно към вашия пример, но съм сигурен, че схващате идеята).
Не съм сигурен дали, както казвате, MySQL
ще бъде достатъчно умен, за да направи само една заявка. Предполагам. Надяваме се, че все пак ще помогне.