如何删除MySQL中对一列具有相同值的行
我有这样的想法:如何删除MySQL中对一列具有相同值的行,mysql,sql,Mysql,Sql,我有这样的想法: col1 col2 col3 A B C A B C 我只想保留其中一行,删除另一行。要实现什么查询?您可以尝试 delete from table where col1 = 'A' and col2 = 'B' and col3 = 'C' limit 1; 您可以在limit子句中使用记录计数等来删除更多记录。如果希望删除两个重复的记录,请尝试以下操作: DELETE m.* FROM mytable m INNER JOIN (SELE
col1 col2 col3
A B C
A B C
我只想保留其中一行,删除另一行。要实现什么查询?您可以尝试
delete from table where col1 = 'A' and col2 = 'B' and col3 = 'C' limit 1;
您可以在limit子句中使用记录计数等来删除更多记录。如果希望删除两个重复的记录,请尝试以下操作:
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关键字,因为表中已有不符合索引的数据。无论如何,这将不允许将来重复插入。easy-
DELETE TOP(1)从表中
@Uriel_SVK,他想删除除第一行以外的所有行。这些行上是否有唯一的键?如果有主键@Taemyr,这将非常容易。不,他想只保留其中一行,删除另一行
,所以我的答案完全符合他的要求。