I do not think you can. So this is actually not an answer, but a comment too long.
You can easily compose your query with two columns (I think you already knew that):
select_query = select([table2.c.col1, table2.c.col2]).where(table1.c.key == table2.c.key)
and then you can use the with_only_columns() method, see 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)
But, as you can see from the update statement, you will effectively make two choices. (Sorry, I did not fully adapt the output to your example, but I'm sure you understand this idea).
I'm not sure if, as you say, MySQL be smart enough to make it just one query. I guess so. Hope it helps anyway.
source share