Saya tidak berpikir Anda bisa. Jadi, ini sebenarnya bukan jawaban, tapi terlalu panjang untuk dikomentari.
Anda dapat dengan mudah membuat kueri dengan 2 kolom (saya rasa Anda sudah mengetahuinya):
select_query = select([table2.c.col1, table2.c.col2]).where(table1.c.key == table2.c.key)
dan setelah itu Anda dapat menggunakan metode with_only_columns()
, lihat 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)
Tetapi seperti yang Anda lihat dari pernyataan pembaruan, Anda akan secara efektif melakukan dua pilihan. (Maaf saya tidak menyesuaikan output sepenuhnya dengan contoh Anda, tapi saya yakin Anda mengerti idenya).
Saya tidak yakin apakah, seperti yang Anda katakan, MySQL
akan cukup pintar untuk menjadikannya satu permintaan saja. Saya rasa begitu. Semoga bisa membantu.