Ik denk niet dat je dat kunt. Dit is dus niet echt een antwoord, maar het is veel te lang voor een commentaar.
U kunt eenvoudig uw zoekopdracht samenstellen met 2 kolommen (ik neem aan dat u dat al wist):
select_query = select([table2.c.col1, table2.c.col2]).where(table1.c.key == table2.c.key)
en daarna kun je de methode with_only_columns()
. gebruiken , zie 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)
Maar zoals je kunt zien aan de update-instructie, doe je effectief twee selecties. (Sorry dat ik de uitvoer niet volledig aan uw voorbeeld heb aangepast, maar ik weet zeker dat u het idee begrijpt).
Ik weet niet zeker of, zoals je zegt, MySQL
zal slim genoeg zijn om er slechts één zoekopdracht van te maken. Ik denk het wel. Ik hoop dat het hoe dan ook helpt.