删除除一条记录之外的重复记录

时间:2012-02-26 10:24:16

标签: mysql duplicate-removal

我有一个包含多个重复记录的表格如下:

ID      Title
-----------------
1       Article A
2       Article A
3       Article B
4       Article C
5       Article A

在上述情况下,我需要所有重复的标题,只留下一个。

B条和C条都没有问题。 除了一个,我需要删除文章A.

示例输出:

ID      Title
-----------------
1       Article A
3       Article B
4       Article C

注意:我不关心要保留或删除的ID。我想要的只是一条记录。

假设我有大量具有重复标题的记录

有什么建议吗?

4 个答案:

答案 0 :(得分:9)

DELETE 
   t1 
FROM 
   tTable t1, tTable t2 
WHERE 
   t1.fieldName = t2.fieldName AND t1.id > t2.id

ELSE

创建另一个表格,如下所示

CREATE TABLE myTable_new (ID INT PRIMARY KEY, Title varchar(20))

并将值添加为

INSERT INTO myTable_new  (ID, Title) SELECT ID, DISTINCT Title FROM old_table

考虑old_table是早期的表格......

答案 1 :(得分:6)

这将始终保留具有最低ID的行 -

DELETE t2
FROM `table` t1
INNER JOIN `table` t2
    ON t1.Title = t2.Title
    AND t1.ID < t2.ID

答案 2 :(得分:1)

DELETE FROM table WHERE Title = 'Article A' AND ID <> 1

只需选择要保留的ID即可。

答案 3 :(得分:0)

UNIQUE列上添加Title约束,忽略重复的键错误:

ALTER IGNORE TABLE my_table ADD UNIQUE my_index (Title)

当然,这样的约束还可以防止将来将更多重复内容添加到表中;如果您不希望将来强制执行此类约束,则可以在创建约束后删除约束:

ALTER TABLE my_table DROP INDEX my_index