如何将列数据复制到具有公共列数据的另一个表中?

时间:2014-06-21 18:53:31

标签: sql sql-server

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

这是我的表格:

  1. 表1
  2. ID | col1 | COL2

    1 | 13 | 12

    2 | 8 | 3

    3 | 7 | 10

    1. 表2

      ID | col1 | col2 | col3 | COL4

    2. 1 | 0 | 0 | 0 | 0

      2 | 0 | 0 | 0 | 0

      3 | 0 | 0 | 0 | 0

      我尝试使用此question

      中的此UPDATE查询
      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没有创建表格。

1 个答案:

答案 0 :(得分:2)

您的语法对于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中的错误可能出现在表后的别名或a语句中的set上。