【问题标题】:Update of single table using join使用连接更新单个表
【发布时间】:2015-07-10 09:53:40
【问题描述】:

我有一个通过连接使用两个表的选择。我需要使用第二个表字段更新第一个表。选择如下

select R.f1, Z.f2,R.f3 
FROM
(select * From Table1 where f2<>'xx' and f3='z') R inner join
(select * From Table2 where f3='xx')             Z 
 ON R.f1⁼Z.f1 and R.f4=Z.f4

如何更新对应 Table1 的相同选择 (SET R.f2=Z.f2)?

UPDATE 

(select * From Table1 where f2<>'xx' and f3='z') R inner join
(select * From Table2 where f3='xx')             Z 
 ON R.f1⁼Z.f1 and R.f4=Z.f4
 SET R.f2=Z.f2

当我尝试时,我得到的响应是

UPDATE的目标表R不可更新

【问题讨论】:

    标签: mysql sql sql-update inner-join


    【解决方案1】:

    您可以通过以下方式在update 语句中使用连接......

    update t
       set t.Column = value
      from Table t
     inner join OtherTable ot on t.Id = ot.TID
     where somecondition = true.
    

    【讨论】:

      【解决方案2】:

      您应该对table1 执行更新并将其加入第二个子查询。第一个子查询中table1 的条件可以应用在 where 子句中:

      UPDATE table1 r
      JOIN   (SELECT * FROM table2 WHERE f3 = 'xx') z  ON r.f1 ⁼ z.f1 AND r.f4 = z.f4
      SET    r.f2 = z.f2
      WHERE  r.f2 <> 'xx' AND r.f3 = 'z'
      

      【讨论】:

        猜你喜欢
        • 2014-12-02
        • 2015-01-27
        • 2016-12-11
        • 2012-06-11
        • 2018-10-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多