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

标签 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 行且具有公共(public)列名称 SCRIPT_ID 时如何实现 SET 子句,以便将来可以再次使用脚本来更新同一个表。

以下是表格中的片段:

____     _____________   __________________  _____     _     _____
 999     EMS02075SVC     Host Controller     15099     3     60000 
1000     EMS02075SVC     DSM Controller      15099     1     60000 
1001     EMS02075WEB1    Application Server   4447     1     60000

最佳答案

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

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 语句,该语句应该可以处理这两种情况以及您在一组代码中编写的任何其他内容。

关于sql-server - 使用 SQL UPDATE 语句将数据从一个表复制到另一个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13545878/

相关文章:

sql-server - 从 SQL Server 中的结果集中删除重复的组合

sql - 在 SQL Server 中一次执行多个 .sql 文件的方法

sql-server - SQL Server 2014 - 合并 - 语法错误

sql - SQL Server XML 数据类型中的 LIKE 比较

sql - 使用SQL Server JSON_VALUE搜索JSON数组

sql - 使用CTE的相邻列表和递归查询,如何回填?

c# - 从 SQL 触发器内部调用 C# 方法

mysql - 将查询结果插入到带有连接的同一个表中

MySQL根据邮政编码更新

PHP PDO 不更新表并且不产生任何错误