Mysql从表中删除重复的条目

时间:2013-10-22 11:11:06

标签: mysql database myisam

我正在使用包含以下列的表

code  (varchar)
desc  (varchar)
attr1 (varchar)
attr2 (varchar)
attr3 (varchar)
reference

并且该表包含批量数据。我需要的是我需要删除表中具有重复值代码的所有条目,attr1,attr2,attr3.I尝试使用这些列添加唯一索引但是没有工作。我可以为这些使用一些脚本。所有这些列都允许空值。我的数据库引擎是myisam。

3 个答案:

答案 0 :(得分:1)

您可以添加唯一索引并使用

删除重复项
ALTER IGNORE TABLE your_table
ADD UNIQUE INDEX dup_idx (code, attr1, attr2, attr3);

答案 1 :(得分:1)

DELETE a 
FROM your_table a 
LEFT JOIN
(
  SELECT MIN(id) AS id, code, attr1, attr2, attr3 
  FROM your_table 
  GROUP BY code, attr1, attr2, attr3
) b 
ON a.id = b.id 
AND a.code = b.code 
AND a.attr1 = b.attr1 
AND a.attr2 = b.attr2 
AND a.attr3 = b.attr3 
WHERE b.id IS NULL

答案 2 :(得分:0)

ALTER IGNORE TABLE your_table
ADD UNIQUE INDEX `UniqueData` (`code`, `attr1` , `attr2` ,`attr3`) ;

这实际上应该可行,但是,它不会费心删除或更改旧数据。 它将确保未来的数据是独一无二的。

如果您尝试添加重复条目,则会引发错误。

如果在使用时仍然无法获得解决方案,请分享您收到的错误消息。