如何删除重复的行,但前提是两个字段都相等。例如.. 在下表中,只有一个 Atlanta 记录会被删除,因为不仅城市字段匹配而且外键匹配。但由于外键不同,达拉斯不会被删除。
+----+-----------------+----------+
| id | City | FK |
+----+-----------------+----------+
| 1 | Los Angeles | 2 |
| 2 | Dallas | 5 |
| 3 | Dallas | 8 |
| 4 | Atlanta | 12 |
| 5 | Atlanta | 12 |
| 6 | New York City | 31 |
+----+-----------------+----------+
最佳答案
如果 City 和 FK 相同,我们将获得最大 id,并删除除 City 和 FK 重复的 max id 条目之外的所有其他条目
DELETE A
FROM TableA A join
(SELECT MAX(id), City, FK
from TableA
group by City,FK
having count(*) > 1
) AA
on A.City = AA.City
and A.FK = AA.FK
and A.id < AA.id
关于mysql - 删除mysql中除了一个重复行之外的所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26000834/