Mysql 使用SQL删除表中的重复记录

Mysql 使用SQL删除表中的重复记录,mysql,sql,Mysql,Sql,我有一个表,其中有学生ID和学生电子邮件地址,我想删除重复的电子邮件地址,我正在使用MySQL,想知道任何好的解决方案。对于任何重复的电子邮件地址,保留其中任何一个都可以 样本输入 ID1 s1@example.com ID2 s2@example.com ID3 s1@example.com 样本输出 ID1 s1@example.com ID2 s2@example.com 提前感谢,, Lin您可以使用join删除数据,并根据您的意愿保留新的或旧的id,这里是如何完成的 delete

我有一个表,其中有学生ID和学生电子邮件地址,我想删除重复的电子邮件地址,我正在使用MySQL,想知道任何好的解决方案。对于任何重复的电子邮件地址,保留其中任何一个都可以

样本输入

ID1 s1@example.com
ID2 s2@example.com
ID3 s1@example.com
样本输出

ID1 s1@example.com
ID2 s2@example.com
提前感谢,,
Lin

您可以使用join删除数据,并根据您的意愿保留新的或旧的id,这里是如何完成的

delete t1 from table_name t1
join table_name t2 on t1.email = t2.email and t1.id > t2.id
这将保留重复值的旧id


如果需要新id,则将t1.id>t2.id更改为t1.id在数据库中插入电子邮件时应使用验证。。。如果电子邮件地址已经存在,则抛出一个错误,即电子邮件已经存在,@RahmanQaiser,谢谢您的建议,并在那里复制。如有任何建议,我们将不胜感激@LinMa这些id是整数吗?尝试选择id,table.email FROM table INNER JOIN选择email FROM table GROUP BY email have countemail>1 dup ON table.email=dup.email[从MySQL中的表中复制电子邮件地址只是想知道SQL引擎是如何执行查询的基础。不确定每个组中的所有连接组,如果SQL引擎枚举所有对并以对方式删除较小的id,则复杂性将很大。