我读了一些其他帖子,关于如何删除没有主键的重复记录,但是他们删除了所有重复的记录,这是我试过的
DELETE FROM table WHERE column IN
(
select column from
(
SELECT MAX(column )as column FROM table
GROUP BY column
HAVING COUNT(*) > 2)as table
)
是因为我的桌子上只有一列吗?
如果我无法删除它们,那么有一种方法可以将所有不同的记录复制到另一个表
答案 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;