mysql - 根据多列获取mysql中的重复记录

标签 mysql sql duplicates

我有一个包含列名称的表

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

任何员工不得在多个部门注册。如果任何员工在多个部门注册,则会被视为重复记录。重复记录可以根据重复手机号来判断。或选民 ID 号。

我想要这样的输出

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

抱歉英语不好

谢谢

最佳答案

正确的方法是让数据库进行检查。因此,清理数据后,您应该添加唯一索引。像这样的东西(我不确定员工的定义是什么):

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;

至于可能的原因,你可能应该问另一个问题。提供示例数据并解释可能原因的含义。这个答案是为了解决问题的要点,识别重复项。

关于mysql - 根据多列获取mysql中的重复记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41879596/

相关文章:

mysql - 我应该创建代理键而不是复合键吗?

mysql - 检查数据库中是否存在 ID

linux - 如何找到特定键的更大值

python - 在Python中替换列表中所有连续且重复的元素

php - PHP 和 MySQL 之间的周差异

python - 如何在加载关系时指示SQLAlchemy ORM 并行执行多个查询?

sql - Varchar 变量在 WHERE 子句中不起作用

mysql - 如何在mysql上显示每组的最后数据(最大数据)

java - 连接android到wamp服务器,出现空指针异常

python - 删除重复的 pandas 数据框