抱歉,我意识到我的标题令人困惑。请让我解释一下。
我有一个如下所示的数据库:
| i | a | b |
| 1 | 5 | 8 |
| 2 | 3 | 3 |
| 3 | 3 | 6 |
| 4 | 5 | 8 |
| 5 | 1 | 1 |
| 6 | 3 | 3 |
其中 i
是 ID,a
和 b
是另外两个字段。正如你在上面看到的,ID 2 和 ID 6 都有 a = 3
和 b = 3
。 ID 1 和 ID 4 也是如此,a
都是 5,b
都是 8。即使 ID 号不同,我仍然认为这些行是重复的,并且希望删除除一个以外的所有行。哪一个都没有关系,并且不必更改 ID 号来弥补差距(但我并不反对)。
我很乐意将上面的例子变成这样的查询:
| i | a | b | | i | a | b |
| 3 | 3 | 6 | | 1 | 5 | 8 |
| 4 | 5 | 8 | or | 2 | 3 | 3 |
| 5 | 1 | 1 | | 3 | 3 | 6 |
| 6 | 3 | 3 | | 5 | 1 | 1 |
请不要犹豫,询问更多详情,提前致谢!
最佳答案
delete from your_table
where i not in
(
select * from
(
select min(i)
from your_table
group by a, b
) x
)
MySQL 无法从它正在选择的表中删除。这就是为什么我使用 select * from () x
关于mysql - 删除具有两个重复字段但没有重复 ID 的 MySQL 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11871469/