mysql - 删除mysql中除了一个重复行之外的所有行

标签 mysql sql duplicates

如何删除重复的行,但前提是两个字段都相等。例如.. 在下表中,只有一个 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/

相关文章:

python - 我如何获得所有喜欢一个对象的 friend 的对象列表?

Java - 在不使用外部类或方法的情况下计算数组中的重复项?

mysql - 无法弄清楚我错过了什么?

mysql - SQL - 根据不同列中的值过滤重复行

php - 根据mysql中格式化的数据计算总和

mysql,根据不同列的最大值选择没有重复的计数

python - 列表列表中的重复删除

php - 如果存在mysql错误

php - MySql 如何计算已经使用 SELECT 获取的结果?

sql - 在 SQL 中将数据从一个现有行复制到另一现有行?