我有这样的查询:
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
语句?
答案 0 :(得分:0)
答案 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