如何使用 SELECT 和链接服务器在 SQL INSERT INTO 查询中添加 NOT EXISTS

How to add NOT EXISTS in SQL INSERT INTO query with SELECT and LinkedServer

有两个tableDocumentDocumentPos。在 Document 中有列 GUID,在 DocumentPos 中有列 DocumentGUID,它指的是 table Document.

INSERT INTO [dbo].[DocumentPos]
           (
            [GUID]
           ,[DocumentGUID]
           ,[Number]
           ,[Price]
           )
     SELECT
           cqdp.GUID,
           cqdp.DocumentGUID,           
           cqdp.Number
           cqdp.Price
FROM [sqlserver\instance].[testdb].[dbo].[documentpos] cqdp
INNER JOIN [sqlserver\instance].[testdb].[dbo].[document] cqd ON cqd.GUID = cqdp.DocumentGUID
WHERE cqdp.DocumentGUID  IN (
SELECT GUID
FROM [sqlserver\instance].[testdb].[dbo].[document]
) 
AND NOT EXISTS 
(
...
)

但是我如何包含 NOT EXISTS 来避免查询尝试插入列 GUID 中已经存在的值?我想添加一个检查 GUID 是否已经存在于 DocumentPos 中,我想从 [sqlserver\instance].[testdb].[dbo].[documentpos].

中包含它

试试这个

...
FROM [sqlserver\instance].[testdb].[dbo].[documentpos] cqdp
JOIN [sqlserver\instance].[testdb].[dbo].[document] cqd 
  ON cqd.GUID = cqdp.DocumentGUID
WHERE NOT EXISTS 
(
  SELECT 1
  FROM [dbo].[DocumentPos] AS dp
  WHERE dp.[GUID] = cqdp.[GUID]
);

只需将源链接到 Guid 上的目标。

IN 的额外条件似乎毫无意义,因为 INNER JOIN 已经强制执行该过滤器。