我有这样的事情:
col1 col2 col3
A B C
A B C
我希望只剩下一行,其他行要删除。要实现什么查询?
答案 0 :(得分:2)
如果您要删除两个重复,请尝试以下操作:
DELETE m.*
FROM mytable m
INNER JOIN
(SELECT col1,
col2,
col3,
COUNT(*)
FROM mytable
GROUP BY col1,
col2,
col3
HAVING COUNT(*)>1
) t
ON m.col1 =t.col1
AND m.col2=t.col2
AND m.col3=t.col3
编辑
由于您已编辑了问题并希望保留两个重复行中的一个,因此您可以使用以下行轻松实现此目的:
ALTER IGNORE TABLE mytable ADD UNIQUE INDEX idx_yourindexname (col1, col2, col3);
这将删除所有重复的行,以便只保留唯一的行。 IGNORE关键字是强制性的,因为您已经拥有违反表中INDEX的数据。 Movereover,这将不允许将来重复插入。
答案 1 :(得分:0)
你可以试试;
delete from table where col1 = 'A' and col2 = 'B' and col3 = 'C' limit 1;
您可以在限制子句中使用记录计数等来删除更多记录。