【问题标题】:MSSQL How to copy data from one table to another with a conditionMSSQL如何使用条件将数据从一个表复制到另一个表
【发布时间】:2021-12-12 22:04:45
【问题描述】:

我正在尝试使用表 b 中某些列的数据更新表 a。两个表中的列名都匹配,无法弄清楚语法,有人可以帮忙吗?

这就是我想要做的(表达不合语法):

更新表_a SET table_a.col1 = table_b.col1,table_a.col2 = table_b.col2 WHERE table_a.id = table_b.id

也许(可能)我需要某种 JOIN 子句,但我还没有弄清楚这些...... :-/

【问题讨论】:

    标签: sql syntax


    【解决方案1】:

    您可以使用两个表的 JOIN 来更新您的表:

    UPDATE table_a a
    INNER JOIN table_b b ON a.id = b.id
    SET a.col1 = b.col1, a.col2 = b.col2
    

    我看到你在使用 MYSQL。不确定上面的版本是否有效。如果没有,请尝试:

    UPDATE table_a a
    INNER JOIN table_b b
    SET a.col1 = b.col1, a.col2 = b.col2
    WHERE a.id = b.id
    

    【讨论】:

    • 其实我在 MSSQL 上。 MERGE 工作正常,“在尝试第一个解决方案时,'a' 附近的语法不正确”
    • 不知道为什么会出现语法错误。据我所知,它应该可以工作:db-fiddle.com/f/2bFjgYEtrD2HHi7s91fwyc/0 编辑:对不起。我一直读错了。 MSSQL!= MYSQL。我的错。对不起。
    【解决方案2】:

    好的,所以我自己找到了... :-)

    MERGE(不使用 WHEN NOT MATCHED 子句)是我的问题的答案。

    我的解决方案:

    合并到 table_a 使用 table_b ON a.id=b.id 匹配时更新集 col1 = b.col1, col2 = b.col2;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-27
      • 1970-01-01
      • 2023-01-12
      • 1970-01-01
      相关资源
      最近更新 更多