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

时间:2012-11-24 21:39:58

标签: 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

请帮助我了解如何在有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

1 个答案:

答案 0 :(得分:7)

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

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

如果您的源表和目标表相同,但您的源包含目标所缺少的新行(记录),则需要选择性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)

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