使用SQL UPDATE语句将数据从一个表复制到另一个表

SID*_*OUS 5 sql-server sql-server-2008 sql-update

UPDATE table2 
SET table2.col1 = table1.col1, 
table2.col2 = table1.col2,
    table2.col3 = table2.col3,
...
FROM table1, table2 
WHERE table1.memberid = table2.memberid
Run Code Online (Sandbox Code Playgroud)

请帮助我了解如何在有9-10行时使用SET子句,并使用公共列名SCRIPT_ID,以便将来可以再次使用脚本来更新同一个表.

这是表中的一个片段:

____     _____________   __________________  _____     _     _____
 999     EMS02075SVC     Host Controller     15099     3     60000 
1000     EMS02075SVC     DSM Controller      15099     1     60000 
1001     EMS02075WEB1    Application Server   4447     1     60000
Run Code Online (Sandbox Code Playgroud)

cog*_*oft 8

如果源表和目标表相同并且具有相同的成员(我假设是主键),这将起作用:

UPDATE destination 

SET destination.col1 = source.col1, 
destination.col2 = source.col2,
destination.col3 = source.col3,
...
FROM table1 AS source
JOIN table2 AS destination ON source.memberid = destination.memberid
Run Code Online (Sandbox Code Playgroud)

如果您的源表和目标表相同,但您的源具有目标所缺少的新行(记录),则您需要一个选择性INSERT语句:

INSERT INTO table2 (
    col1,
    col2,
    col3,
    ...
) SELECT col1, col2, col3, ... 
FROM table1 
WHERE NOT EXISTS (
    SELECT memberid 
    FROM table2 
    WHERE table2.memberid = table1.memberid)
Run Code Online (Sandbox Code Playgroud)

以上内容仅插入目标表中尚未存在的记录.由于您使用的是SQL Server 2008,因此您可以尝试使用MERGE应该处理这两种情况的语句以及您在一组代码中编码的任何其他内容.