【发布时间】:2019-05-18 06:49:22
【问题描述】:
Load_Charges_IMPORT 查询中有大约 2600 行没有插入到Load_Charges 查询中。
我试图确保没有添加重复的主键条目。主键在Load_Charges 查询中建立为复合键(收费说明 + 收费金额)。 Load_Charges_IMPORT 查询中未设置任何键,并且此数据是从 Excel 文档中导入的。
当我知道Load_Charges_IMPORT 中有 2600 多行时,您能否告诉我我的代码是否有问题以及为什么我会收到0 row(s) affected 的响应。
INSERT INTO Load_Charges
SELECT *
FROM Load_Charges_IMPORT
WHERE
NOT EXISTS (SELECT [Load ID]
FROM Load_Charges
WHERE Load_Charges_IMPORT.[Load ID] = Load_Charges.[Load ID])
AND NOT EXISTS (SELECT [Charge Description]
FROM Load_Charges
WHERE Load_Charges_IMPORT.[Charge Description] = Load_Charges.[Charge Description])
AND NOT EXISTS (SELECT [Charged Amount]
FROM Load_Charges
WHERE Load_Charges_IMPORT.[Charged Amount] = Load_Charges.[Charged Amount]);
【问题讨论】:
-
至少您的
not exists条件之一必须排除超出您预期的内容。通过单独测试每个not exists条件进行调试,然后更改为exists条件以查看哪些行匹配(因此未导入)。一旦你识别出它们,你就会看到你的重复逻辑在哪里不正确——我们无法告诉你。 -
您希望通过发布的代码导入但未导入的阶段表中的行的示例是什么?
标签: sql sql-server tsql not-exists