【问题标题】:How to add NOT EXISTS in SQL INSERT INTO query with SELECT and LinkedServer如何使用 SELECT 和 LinkedServer 在 SQL INSERT INTO 查询中添加 NOT EXISTS
【发布时间】:2019-12-05 12:43:54
【问题描述】:

有两个表DocumentDocumentPos。在Document 中有GUID 列,在DocumentPos 中有DocumentGUID 列,它指的是表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 中包含它。

【问题讨论】:

  • 这不是和你问的here一样吗?

标签: sql-server insert linked-server


【解决方案1】:

试试这个

...
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 已经强制过滤。

【讨论】:

    猜你喜欢
    • 2012-09-29
    • 1970-01-01
    • 2019-07-29
    • 2015-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-21
    • 2023-02-21
    相关资源
    最近更新 更多