我需要使用 MySQL 删除表中部分相似的行。例如:
来自table1(id,color1,color2,key)的内容:
id,color1,color2,key
-----------------------------
1,Blue,Green,AASDDD
2,Blue,Green,JJUUYYY
3,Blue,Red,HHYYY
4,Green,Red,KKIII
5,Blue,Red,KKIIUUUU
我想删除 color1,color2 中的重复行并得到:
id,color1,color2,key
-----------------------------
1,Blue,Green,AASDDD
3,Blue,Red,HHYYY
4,Green,Red,KKIII
有点像
delete FROM table1 WHERE Exists(SELECT color1,color2 FROM table1)
在不创建临时表的情况下,在 MySQL 中执行此操作的最佳方法是什么?
(我知道有很多关于在 MySQL 中删除重复行的帖子,但不是针对部分匹配的行。)
最佳答案
DELETE FROM table1
WHERE id NOT IN (SELECT min(id)
FROM table1
GROUP BY color1, color2)
编辑
MySQL 无法从具有同一表的子查询的表中删除。要解决该限制,您可以这样做:
DELETE FROM table1
WHERE id NOT IN (select * from (SELECT min(id)
FROM table1
GROUP BY color1, color2) t)
关于mysql - 删除 MySQL 中部分相似的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11539643/