删除重复记录
答
试试这个 -
身份加入ID列到表中第一个 -
alter <tablename> add id INT IDENTITY
然后使用下面的查询来删除重复记录 -
delete
FROM <tablename>
WHERE id IN
(
SELECT MAX(id)
FROM <tablename>
GROUP BY <columnnames defining uniqueness>
having count (*) > 1
)
请考虑到,那它只删除一个现有行的副本。如果存在共享分组条件的三行 - 除非多次执行查询(直到没有行被删除)或更改删除条件,否则这将不起作用。
答
使用distinct
:
SELECT distinct * FROM Table ....
答
这主要取决于你的表结构,约束上的数量已经和列的,如果有任何主键的数量。
您需要找到optmized查询,它将基于上述约束条件来识别唯一记录,然后最重要的是您需要考虑根据查询删除这些重复项所用的时间。
所以没有人可以发表评论,除非你发布完整的结构和一些示例重复数据。
希望这个小输入有帮助。
答
下面是删除重复记录
Create table #Test (colA int not null, colB int not null, colC int not null, id int not null identity) on [Primary]
GO
INSERT INTO #Test (colA,colB,colC) VALUES (1,1,1)
INSERT INTO #Test (colA,colB,colC) VALUES (1,1,1)
INSERT INTO #Test (colA,colB,colC) VALUES (1,1,1)
INSERT INTO #Test (colA,colB,colC) VALUES (1,2,3)
INSERT INTO #Test (colA,colB,colC) VALUES (1,2,3)
INSERT INTO #Test (colA,colB,colC) VALUES (1,2,3)
INSERT INTO #Test (colA,colB,colC) VALUES (4,5,6)
GO
Select * from #Test
GO
Delete from #Test where id <
(Select Max(id) from #Test t where #Test.colA = t.colA and
#Test.colB = t.colB and
#Test.colC = t.colC)
GO
Select * from #Test
GO
有样品的例子,但你应该学会这两个搜索现有的答案和接受回答您存在的问题。 – 2010-08-02 07:06:50
您使用的是什么RDBMS?你最近的10个问题中有没有得到满意的回答?如果是的话,你能接受这些答案吗? – 2010-08-02 09:15:39
如果你使用MySQL,你可能想从昨天看看这篇文章:http://*.com/questions/3383898/remove-duplicates-using-only-a-mysql-query – 2010-08-02 09:39:49