Nie sądzę, że możesz. Tak więc nie jest to tak naprawdę odpowiedź, ale jest zbyt długa na komentarz.
Możesz łatwo skomponować zapytanie z 2 kolumnami (chyba już o tym wiedziałeś):
select_query = select([table2.c.col1, table2.c.col2]).where(table1.c.key == table2.c.key)
a potem możesz użyć metody with_only_columns()
, zobacz 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)
Ale jak widać w oświadczeniu o aktualizacji, skutecznie dokonasz dwóch wyborów. (Przepraszam, że nie dostosowałem danych wyjściowych całkowicie do twojego przykładu, ale jestem pewien, że masz pomysł).
Nie jestem pewien, czy, jak mówisz, MySQL
będzie na tyle sprytny, że zrobi to tylko jedno zapytanie. Chyba tak. Mam nadzieję, że to i tak pomoże.