【问题标题】:SQL UPDATE multiple rows of matching data between two tablesSQL UPDATE 两表之间多行匹配数据
【发布时间】:2021-11-02 09:40:45
【问题描述】:

我正在尝试 UPDATE MySQL Table1 使用 Table2 数据,其中列 CODE 是表之间的唯一 ID。

表 1

CODE QTY
A 10
B 15
C 20

表2

CODE QTY
B 10
C 5

所需的输出是 Table1 QTY 数据被添加到(而不是替换)Table2 @987654326 @ 用于两个表之间的匹配代码。

我在下面尝试过,但是没有给出预期的结果,并且给我一个语法错误。

UPDATE Table1 set QTY=(QTY +
SELECT IF(QTY IS NULL or QTY = '', '0', QTY) 
from Table2)

由于我还在学习中,显然我对 SQL 的了解有限,如果有人能提供帮助,不胜感激。

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    您可以使用join。我建议在加入之前进行汇总:

    update table1 t1 join
           (select t2.code, sum(t2.qty) as qty
            from table2 t2
            group by t2.code
           ) t2
           using (code)
        set t1.qty = t2.qty + t1.qty;
    

    如果table2 中的多行具有相同的代码,则首先聚合可确保您获得预期的结果。如果您知道代码在table2 中是唯一的,您可以使用join

    update table1 t1 join
           table2 t2
           using (code)
        set t1.qty = t2.qty + t1.qty;
    

    【讨论】:

      猜你喜欢
      • 2016-09-25
      • 1970-01-01
      • 2017-12-16
      • 1970-01-01
      • 2012-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-09-28
      相关资源
      最近更新 更多