如何从mysql中删除重复的行

时间:2014-08-29 22:24:24

标签: mysql sql duplicates

我读了一些其他帖子,关于如何删除没有主键的重复记录,但是他们删除了所有重复的记录,这是我试过的

DELETE FROM table WHERE column IN
( 
select column from
(
    SELECT    MAX(column )as column FROM table
    GROUP BY column 
    HAVING COUNT(*) > 2)as table
)

是因为我的桌子上只有一列吗?

如果我无法删除它们,那么有一种方法可以将所有不同的记录复制到另一个表

2 个答案:

答案 0 :(得分:0)

如果只有一列,则选择重复项变得不可能,因为SQL基于set-logic。

选择不同的值非常简单:select distinct column from table。将其插入表格也很简单:select * into newtable from (select distinct column from table)

答案 1 :(得分:0)

由于MySQL的限制,您的查询失败。只需将其改为join即可。这是一种方式:

DELETE t
    FROM table t LEFT JOIN
    (SELECT MAX(column ) as column
     FROM table
     GROUP BY column
    ) tosave
    ON t.column = tosave.column
WHERE tosave.column is null; 

编辑:

糟糕。我正在关注您的查询结构。这不适用于一列。您将需要使用临时表并重新插入:

create temporary table temptable as
    select distinct column
    from tablename;

truncate table tablename;

insert into tablename(column)
    select column
    from temptable;