重复的主键sql

时间:2018-01-17 23:48:17

标签: sql duplicates primary-key sql-server-express

这似乎是重复的 SQL Server : Duplicate Primary Key error

我会给出一些背景知识。首先,我使用的是SQL Express。其次,我正在使用导入和导出向导。第三,源文件是文本文件。第四,我已成功导入此文件的两个其他迭代,FIRMS。 2017q2和2013q2进口罚款但2013q1不会。原因是重复的主键错误。

我的主要密钥是stateaccountunityrqtr。还有25个其他外键。样本数据如下。

错误消息会产生违规值,可以这么说。我在excel和notepad ++中找到了这个值。然而,当我挖掘时,我发现这四者的组合只发生过一次。

作为进一步的测试,在excel中,我将四个主键值连接到一个字段中,然后在连接(组合)值中搜索重复项。 Excel会显示结果,但是当你看到它们时,它们就不一样了。每个被认为重复的项目的单元号不同。我注意到当name1(不是主键)的值超过1时,excel(和我认为的SQL)认为它是重复的。我只使用excel作为查找重复项的工具。

state   area    account    unit     yrqtr     name1     name2
  32   000001    12345    00001     201301    bakery    xyz bakery
  32   000003    12346    00001     201301    auto      xyz auto

对于SQL,我导入了201301作为各种加载表,而不是将其附加到FIRMS。从那里,我使用以下代码。它没有结果。最后,我查看了201702和201302,发现没有重复

select state,account,unit,yrqtr
from dbo.201301
Group by state,account,unit,yrqtr
having count(*) >1

那么关于我如何解决看似不存在的重复问题的任何想法?

1 个答案:

答案 0 :(得分:0)

获取目标表的空副本,禁用主键和外键,将所有文件导入该表并运行查询以检查重复数据。这可能会揭示在导入过程中是否正在修改数据。

SELECT state, account, unit, yrqtr, COUNT(*) AS dups 
FROM TableCopy 
GROUP BY state, account, unit, yrqtr 
HAVING COUNT(*) > 1