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