mysql - 如何删除所有重复行,包括 SQL 中的原始行?

标签 mysql sql phpmyadmin

我有一个这样的表:

id   id2
1    435  
2    345
3    345
4    567
5    456
6    987
7    987

这里 id2 345987 重复了两次,所以我想删除这两行。我的新表应如下所示:

id   id2
1    435  
4    567
5    456

最佳答案

您可以通过使用聚合从 select 中删除它们:

select min(id), id2
from t
group by id2
having count(*) = 1;

如果要从表中删除它们,请使用joingroup by:

delete t
    from t join
         (select id2, count(*) as cnt
          from t
          group by id2
         ) tt
         on t.id2 = tt.id2
    where cnt > 1;

关于mysql - 如何删除所有重复行,包括 SQL 中的原始行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55181538/

相关文章:

mysql 查询每行的另一个表的 max()

mysql - 将作业从 MS Access 文件同步到 MySQL 数据库

SQL 性能 : SELECT DISTINCT versus GROUP BY

mysql - 如何输入动态 key 到json_extract mysql?

mysql - 如何更改MySQL数据库中的时区

MySQL 和/或查询在多个表之间进行高级搜索

MySQL不同版本其他结果

sql - 在聚合函数 SQL Server 中选择 N 行

mysql - 在 mySQL 中将 VarChar-Date 转换为 Unix 时间戳

mysql - PHPMyAdmin 登录后显示空白屏幕