admin

如何将列数据复制到另一个表,两个表中都存在公用列数据?

sql

我想将两列的数据复制到另一个具有许多列的表中,并且两个表上都有一个公用列。

这是我的桌子:

  1. 表格1

ID | col1 | col2

1 | 13 | 12

2 | 8 | 3

3 | 7 | 10

  1. 表2

ID | col1 | col2 | col3 | 第4列

1 | 0 | 0 | 0 | 0

2 | 0 | 0 | 0 | 0

3 | 0 | 0 | 0 | 0

我试图从这个问题中使用这个更新查询

UPDATE table2 a,table1 b SET 
a.col1 = b.col1,
a.col2 = b.col2,
a.col3 = a.col3 + b.col1,
a.col4 = a.col4 + b.col2
WHERE a.ID = b.ID

但它给

Msg 102, Level 15, State 1, Line 1
Incorrect syntax near 'a'.

无论如何有可能做到这一点?抱歉,如果我没有用一种好的方法来写表,但是看来stackoverflow不会创建表。


阅读 148

收藏
2021-06-07

共1个答案

admin

您的语法对于MySQL来说看起来是正确的,但是最好写成:

UPDATE table2 a join
       table1 b
       on a.ID = b.ID
    SET a.col1 = b.col1,
        a.col2 = b.col2,
        a.col3 = a.col3 + b.col1,
        a.col4 = a.col4 + b.col2;

对于SQL Server,语法为:

UPDATE a
    SET col1 = b.col1,
        col2 = b.col2,
        col3 = a.col3 + b.col1,
        col4 = a.col4 + b.col2
    FROM table2 a join
         table1 b
         on a.ID = b.ID;

在SQL Server中的错误可能是在桌子上后,或在别名aset语句。

2021-06-07