如何使用 SELECT 和链接服务器在 SQL INSERT INTO 查询中添加 NOT EXISTS
How to add NOT EXISTS in SQL INSERT INTO query with SELECT and LinkedServer
有两个tableDocument
和DocumentPos
。在 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
已经强制执行该过滤器。
有两个tableDocument
和DocumentPos
。在 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
已经强制执行该过滤器。