在多列的基础上获取mysql中的重复记录

时间:2017-01-26 17:39:43

标签: mysql sql duplicates

我有一个列名为

的表
ID,EMP_NAME,DEPARTMENT,VOTER ID, MOBILE NO,Driver_License_NO,REGISTRATION_DATE

没有员工可以在多个部门注册。如果任何员工在多个部门注册,则将其视为DUPLICATE记录。重复记录可以根据重复的手机号判断。或选民身份证号码。

我想要一个像这样的输出

Name | Previous Department | Current Department | Possible Reason for Duplication(Mobile or Voter ID)

抱歉英语不好

感谢

1 个答案:

答案 0 :(得分:0)

执行此操作的正确方法是让数据库执行检查。因此,在清理数据后,应添加唯一索引。这样的事情(我不确定是什么定义了员工):

create unique index unq_atable_empname_department on atable(empname, department);

您可以使用聚合获取所有重复项:

select empname, group_concat(distinct department) as departments
from atable
group by empname
having count(distinct department) > 1;

至于可能的原因,你应该问另一个问题。提供样本数据并根据可能的原因解释您的意思。这个答案是针对问题的要点,找出重复的内容。