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

摘要:
因为数据库没键外键,在关联查询的时候,会碰到查询条数多余数据库实际条数,这因为关联字段在表中有重复值而导致的。解决方案:1、数据库脚本删除重复数据,保留最新的一条2、对关联字段增加唯一约束例如:以下表,部门表的部门编号出现了重复。

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

解决方案:

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

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

例如:

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

首先判断是不是重复

1 select count(*)  fromdepartment 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         selectd.id 
4         fromdepartment 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删除重复数据,保留最新的那一条》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇RedHat yum安装配置从Maya中导入LightMap到unity中下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

mysql 成绩排序

编写一个 SQL 查询来实现分数排名。 如果两个分数相同,则两个分数排名(Rank)相同。请注意,平分后的下一个名次应该是下一个连续的整数值。换句话说,名次之间不应该有“间隔”。 +----+-------+| Id | Score |+----+-------+| 1 | 3.50 || 2 | 3.65 || 3 | 4.00 || 4 | 3.85...

MySQL是怎样运行的?打卡汇总

启动选项和系统变量 mysql配置方式之一,在命令行上使用选项配置。有长形式和短形式之分,同时等号=前后不能有空格。对于常用的选项提供短形式,也就是选项首字母前加‘-’前缀。这种方式只对当次启动有效。 mysql配置方式之二,在配置文件中使用选项。会按照一定路径寻找配置文件,ini,cnf都为配置文件。配置文件内容可以分组。可以通过命令行指定配置文件的优...

Mysql的union

我同事写了一条Sql语句,当时没看明白,下面晒出来: SELECT SUM(new_cart) as new_cart,SUM(new_collect) as new_collect, SUM(total_cart) as total_cart, SUM(total_collect) as total_collect, SUM(ipv) ipv, SUM(...

mysql中-e用法

实际应用中,不仅可以先登陆mysql再使用,还可以在链接的时候进行sql操作,此时需要加参数-e 例: >mysql -hlocalhost -P8080 -uroot -p123456 -e'set names utf8;use report;select * from table;'; 就是这样,-e中的语句需要用封号来分割。...

【转】宽字节注入详解

前言在mysql中,用于转义的函数有addslashes,mysql_real_escape_string,mysql_escape_string等,还有一种情况是magic_quote_gpc,不过高版本的PHP将去除这个特性。 首先,宽字节注入与HTML页面编码是无关的,笔者曾经看到 &lt;meta charset=utf8&gt;...

MySQL恢复误删数据解决方案

  工作中难免会误删数据,下面说一下怎样从导出的备份数据和binlog日志中恢复数据。关于备份数据和binlog可以参考下面的文章:   MySQL导入、导出、数据库定时备份   MySQL5.7开启binlog日志,及数据恢复简单示例   一、恢复数据思路   总体思路是从备份文件中恢复已备份的数据,还有一些未备份的数据从binlog日志中恢复。当然,具...