2015-09-04 79 views
-1

我有一个表有学生ID和学生的电子邮件地址,我想删除重复的电子邮件地址,我使用MySQL并想知道任何好的解决方案。对于任何重复的电子邮件地址,请保持一个没问题。使用SQL删除表中的重复记录

样品输入,

ID1 [email protected] 
ID2 [email protected] 
ID3 [email protected] 

示例输出,

ID1 [email protected] 
ID2 [email protected] 

在此先感谢, 林

+1

你应该若已中的电子邮件地址数据库中插入电子邮件时使用验证...退出抛出电子邮件已存在的错误, –

+0

@RahmanQaiser,感谢您的建议,并已在那里复制。任何建议表示赞赏。 :) –

+1

@ LinMa是那些ID是整数? –

回答

3

可以使用加入和保留新的或旧的ID作为删除数据根据您的愿望和在这里如何完成

delete t1 from table_name t1 
join table_name t2 on t1.email = t2.email and t1.id > t2.id 

这将保持旧的ID为重复值 http://sqlfiddle.com/#!9/9d2925/1

如果你想那么新的ID更改t1.id > t2.idt1.id < t2.id

+0

聪明而聪明。 :) –

+0

只是想知道SQL引擎如何执行底层的查询。如果SQL引擎枚举所有对并且以成对方式删除较小的id,那么不确定所有联接组在每个组内,如果是的话,复杂性将很大。 –