【问题标题】:How can I use multiple columns of SELECT into UPDATE statement?如何在 UPDATE 语句中使用多列 SELECT?
【发布时间】:2017-12-20 06:10:19
【问题描述】:

我有一个这样的查询:

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 语句中使用这个^?

【问题讨论】:

  • 查找更新/加入语法。

标签: mysql sql


【解决方案1】:

参见manualstackoverflow 中的多表语法

【讨论】:

    【解决方案2】:

    可以更新连接表。我认为应该可以加入 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
    

    【讨论】:

      猜你喜欢
      • 2019-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-24
      • 1970-01-01
      • 2018-10-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多