Sql server 使用DISTINCT从SQL server行中删除重复项

Sql server 使用DISTINCT从SQL server行中删除重复项,sql-server,duplicates,distinct,Sql Server,Duplicates,Distinct,当使用distinct方法将文件导入数据库时,我需要删除SQL server重复的行 HallGroup是数据库中的我的表。我在用这个 Sql过程: SELECT DISTINCT * INTO tempdb.dbo.tmpTable FROM HallGroup DELETE FROM HallGroup INSERT INTO HallGroup SELECT * FROM tempdb.dbo.tmpTable DROP TABLE tempdb.dbo.tmpTable 使用此过程可

当使用distinct方法将文件导入数据库时,我需要删除SQL server重复的行

HallGroup是数据库中的我的表。我在用这个 Sql过程:

SELECT  DISTINCT * INTO tempdb.dbo.tmpTable
FROM HallGroup
DELETE FROM HallGroup
INSERT INTO HallGroup SELECT * FROM tempdb.dbo.tmpTable
DROP TABLE tempdb.dbo.tmpTable
使用此过程可以很好地删除重复的行,但问题是当我再次尝试将数据导入SQL server时,行仍在重复。我遗漏了什么,有什么提示吗


当使用distinct方法将文件导入数据库时,如何正确删除SQL server重复行?

我在离开一段时间后才重新进入SQL,但我相信我不会以您正在尝试的方式解决您的问题(并非我完全理解您为什么这样做)(即使工作正常)随着时间的推移,随着表大小的增加,每次执行此操作时,您的过程将花费更长的时间

如果您在没有密钥的情况下插入新数据(表示您已经在使用存储的进程),那么效率会更高,创建一个。我刚刚解决了一个与您类似的问题,而我正在从外部源向表中导入数据,并希望消除重复的可能性。在我的情况下,我关联外部源数据文件的名称(与要导入的数据集不同)使用要导入的数据,并使用该数据确保我没有重新导入已导入的数据。我使用dtsx将外部数据加载到表中,然后运行存储过程将该数据与现有表合并。这给了我一个额外的优势,即拥有每条记录来源的审核跟踪


希望这有帮助。

你看到了你已经在表中得到的数据的重复,你需要在导入时链接到那个表,以确保你不是复制数据。如何在导入时链接我的表?我会考虑使用一个分级表来加载数据(每次截断)。。然后用join做一个简单的插入。我尝试过截断,但效果是一样的。我是SQL新手,不知道怎么做。