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

时间:2016-04-28 14:13:07

标签: sql-server duplicates 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服务器行仍然是重复的。我缺少什么,所以任何提示?

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

1 个答案:

答案 0 :(得分:0)

我只是在退出一段时间后回到SQL中但是我不会以你那样的方式解决你的问题(不是我完全理解你为什么这样做)我相信(甚至如果它正常工作)随着时间的推移,每次你的过程将花费更长的时间,因为表的大小增加。

如果基于缺少密钥插入新数据(表明您已经在使用存储过程),效率会更高。如果您没有使用密钥(最近发生在我身上),请制作密钥。我刚刚解决了类似的问题,而我将数据从外部源导入表中,并希望消除重复的可能性。在我的例子中,我将外部源数据文件的名称(与要导入的数据集不同)与要导入的数据相关联,并使用它来确保我不会重新导入已导入的数据。我使用dtsx将外部数据加载到表中,然后运行存储过程以将该数据与现有表合并。这为我提供了额外的优势,即对每条记录的来源进行审计跟踪。

希望这有帮助。