首页 > 数据库技术 > 详细

mysql删除重复数据,保留最新的那一条

时间:2018-10-30 16:11:25      阅读:157      评论:0      收藏:0      [点我收藏+]

因为数据库没键外键,在关联查询的时候,会碰到查询条数多余数据库实际条数,这因为关联字段在表中有重复值而导致的。

解决方案:

1、数据库脚本删除重复数据,保留最新的一条

2、对关联字段增加唯一约束

 

例如:

以下表,部门表的部门编号出现了重复。

首先判断是不是重复

1 select count(*)  from department d
2 
3 select count(*) from ( select distinct dept_code from department )

看以上查出来的数量是不是相同的,不同则就是dept_code有出现重复的

接下来删除重复值,并保留最新的记录

 1 delete from department where id in (
 2     select * from (
 3         select d.id 
 4         from department d
 5         inner join (
 6             select m.dept_code,max(m.sys_tm) max_tm FROM department m group by m.dept_code having count(1) > 1 
 7         ) a on a.dept_code = d.dept_code
 8         where d.sys_tm <> a.max_tm
 9     ) tmp
10 );

 

给该字段增加唯一索引

1 ALTER TABLE `department`
2     ADD UNIQUE INDEX `idex_dept_code` (`dept_code`);

 

mysql删除重复数据,保留最新的那一条

原文:https://www.cnblogs.com/jay763190097/p/9876755.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!