如何将多列SELECT用于UPDATE语句?

时间:2017-07-15 05:31:23

标签: mysql sql

我有这样的查询:

UPDATE t1 
SET t1.col1 = ( SELECT col1 FROM t2 WHERE <some_complex_conditions> ),
    t1.col2 = ( SELECT col2 FROM t2 WHERE <some_complex_conditions> )
WHERE id = :id;

如您所见,我必须执行两次相同的查询,每次都要执行一列。同样正如我所提到的那样,SELECT查询具有一些需要大量处理的复杂条件。现在我想知道,如何处理UPDATE语句以通过单个SELECT语句更新这两列?

这样的事情:

SELECT col1, col2 FROM t2 WHERE <some_complex_conditions> 

换句话说,如何将这个^用于UPDATE语句?

2 个答案:

答案 0 :(得分:0)

请参阅manualstackoverflow

中的多表语法

答案 1 :(得分:0)

可以更新已连接的表格。我认为应该可以加入select语句,但我不确定,但我认为下面的示例显示了等效的查询:

UPDATE t1
LEFT JOIN t2
 -- joining condition, there can be the part <some complex condition>
 ON t1.id = t2.ref_id AND t2.col3 = 'whatever you want'
SET t1.col1 = t2.col1, t1.col2 = t2.col2
--additional condition like WHERE t2.col1 IS NOT NULL