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

Posted 风吹过的绿洲

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql删除重复数据,保留最新的那一条相关的知识,希望对你有一定的参考价值。

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

解决方案:

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删除重复数据,保留最新的那一条的主要内容,如果未能解决你的问题,请参考以下文章

mysql数据库中有两条重复的数据,,但是id是不一样的,但是我想在前台显示出来的数据是id较大的那一条数

mysql删除重复数据,保留一条

mysql 删除重复的数据保留一条

mysql删除重复数据,只保留第一条(或最后一条)

Oracle如何删除一张表内的重复数据,但保留最新的一条?

MySQL中删除重复数据只保留一条