[英]How to update table with only new or changed values?
这是我的查询,但它会产生很多双打,因此我需要插入新值,并(可能)更新更改后的值。
INSERT INTO [FRIIB].[dbo].[ArchiveAnalog]
(Date, ID, Value)
SELECT Date, ID, Value
FROM [LinkedOne].[FRIIB].[dbo].[ArchiveAnalog]
我的问题是我需要不比较单个值,我需要比较整个节点和3个值以检查是否存在。
谢谢。
假设SQL Server 2008或更高版本,请使用MERGE
MERGE INTO [FRIIB].[dbo].[ArchiveAnalog]
USING (
SELECT [Date], ID, [Value]
FROM [LinkedOne].[FRIIB].[dbo].[ArchiveAnalog]
) AS source ([Date], ID, [Value])
ON [Date] = source.[Date]
AND ID = source.ID
AND [Value] = source.[Value]
WHEN NOT MATCHED THEN
INSERT ([Date], ID, [Value])
VALUES ([Date], ID, [Value]);
要插入缺少的值,请执行以下操作
INSERT INTO [FRIIB].[dbo].[ArchiveAnalog] (Date, ID, Value)
SELECT laa.Date, laa.ID, laa.Value
FROM [LinkedOne].[FRIIB].[dbo].[ArchiveAnalog] laa
LEFT OUTER JOIN [FRIIB].[dbo].[ArchiveAnalog] aa ON aa.Date = laa.Date
AND aa.ID = laa.ID
AND aa.Value = laa.Value
WHERE aa.ID IS NULL
要更新现有值,您可能需要查看MERGE
语句
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.