Tôi không nghĩ bạn có thể. Vì vậy, đây thực sự không phải là một câu trả lời, nhưng nó là quá dài cho một bình luận.
Bạn có thể dễ dàng soạn truy vấn của mình với 2 cột (tôi đoán bạn đã biết điều đó):
select_query = select([table2.c.col1, table2.c.col2]).where(table1.c.key == table2.c.key)
và sau đó, bạn có thể sử dụng phương thức with_only_columns()
, xem 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)
Nhưng như bạn thấy từ câu lệnh cập nhật, bạn sẽ thực hiện một cách hiệu quả hai lựa chọn. (Xin lỗi, tôi đã không điều chỉnh đầu ra hoàn toàn cho ví dụ của bạn, nhưng tôi chắc rằng bạn hiểu rõ).
Tôi không chắc liệu, như bạn nói, MySQL
sẽ đủ thông minh để thực hiện một truy vấn duy nhất. Tôi đoán vậy. Hy vọng nó sẽ giúp dù sao.