我有两个表DESTINATION和STAGING具有相同的结构和非常相似的数据。只有少数几行我才有所不同。例如: 在DESTINATION表中我有行:
ID, Name, ShortName
1, Name1, N1
2, Name2, N2
3, Name3, N3
在STAGING表中我有:
ID, Name, ShortName
1, Name1, N1
2, Name2, newN2
3, Name3, N3
如何仅使用ShortName列(newN2)中的新数据更新DESTINATION表第二行,并且对行没有任何区别而没有任何差异?
答案 0 :(得分:0)
假设您正在使用SQL Server,您可以这样做:
update d
set ShortName = s.ShortName
from destination d
join staging s
on d.id = s.id
and d.ShortName != s.ShortName;
SQLFiddle:http://sqlfiddle.com/#!6/0119c/1
答案 1 :(得分:0)
您可以像这样更新
UPDATE A
SET A.shortname = B.ShortName
FROM DESTINATION A
INNER JOIN STAGING B
ON A.ID=B.ID
AND A.shortname<>B.ShortName;
答案 2 :(得分:0)
尝试使用UPDATE ... FROM:
UPDATE Destination
SET ShortName = stg.ShortName
FROM Staging stg -- Reference "staging" table
WHERE Destination.ID = stg.ID
AND Destination.ShortName <> stg.ShortName; -- Only update rows with "ShortName" values don't match
这将使用DESTINATION
表格中的数据更新您的STAGING
表格。这适用于Postgres。
答案 3 :(得分:0)
在MS SQL中,使用合并脚本是更新表的最佳方法。您可以查看多个列。
should be