从表中删除重复的行只有1列?

时间:2013-01-07 10:51:05

标签: mysql sql duplicate-removal delete-row

我相信我的问题已被问到,但我没有找到答案。

有一个mysql表mytable,其中一列mycolumn

从表中删除重复项的mysql查询是什么?

2 个答案:

答案 0 :(得分:2)

只有一列没有pk或其他列可以用来查看它们是否不同? 如果是的话,这是一个不好的做法。考虑为每条记录插入一个新列(数字)并插入id,而不是尝试此查询:

delete from table 
where counter > 1 and inner_query.mycolumn = table.mycolumn and inner_query.col_id = table.col_id from 
(select mycolumn, col_id, count (mycolumn) counter  
 from table group by  mycolumn
) inner_query

,可以添加主键

答案 1 :(得分:1)

只要没有触发器或外键,这是一种方法。未经测试,因为我在手机上,但应该工作。在此之后,可以在mycolumn上创建一个唯一索引,以避免重复。

Create table _mytable
Select distinct mycolumn from mytable;

delete from mytable;

Insert into mytable(mycolumn)
Select mycolumn from _mytable;

Drop table _mytable;