MySQL根据某一个或者多个字段查找重复数据,并且保留某字段值最大的记录
来源:互联网 发布:ubuntu 等待安装 卡住 编辑:程序博客网 时间:2024/06/07 10:24
问题场景
当系统没有处理好并发操作的情况下,操作人员同时操作一张表的情况下,数据库有可能被插入相同记录,这些会带来隐藏的bug。
解决思路一
解决并发操作的冲突。
解决思路二
对数据库(MySQL)某张表去重,首先确定你的业务是否允许重复,不允许你重复的话可以建立唯一索引和联合唯一索引来保证记录不重复,但如果出现了重复记录,怎么办?请看下文。
情况一:对一个字段查找重复记录
表数据:
a. 首先根据sample_code字段找到重复记录
SELECT * FROM tb_table WHERE sample_code IN(SELECT sample_code FROM tb_table GROUP BY sample_code HAVING COUNT(sample_code) > 1);
b. 删除重复记录,只保留id字段值最大的记录
delete from tb_table where id not in (select maxid from (select max(id) as maxid from tb_table group by sample_code) b);
使用select语句查看结果如下图:
情况二:对多个字段查找重复记录(这里以2个为例)
表数据:
a. 首先根据name和code字段找到重复记录
SELECT * from (SELECT *, CONCAT(name,code) as nameAndCode from tb_table) t WHERE t.nameAndCode in ( SELECT nameAndCode from (SELECT CONCAT(name,code) as nameAndCode from tb_table) tt GROUP BY nameAndCode HAVING count(nameAndCode) > 1)
b. 删除重复记录,只保留id字段值最大的记录
DELETE from tb_table WHERE id not in ( SELECT maxid from (SELECT MAX(id) as maxid, CONCAT(name,code) as nameAndCode from tb_table GROUP BY nameAndCode) t)
使用select语句查看结果如下图:
阅读全文
0 0
- MySQL根据某一个或者多个字段查找重复数据,并且保留某字段值最大的记录
- mysql 对某一个或者多个重复字段的筛选
- mysql删除重复的数据,保留一条,根据多个字段判断。以及统计重复数据
- SqlServer-删除某一个字段重复的记录,只保留一条
- 根据某一个字段删除表中重复的记录
- mysql 查找重复的字段,并删除记录只保留一条
- MySQL查找并且删除表中重复的字段
- sql查找某字段重复的记录
- sql 删除表中多余的重复记录(多个字段),只保留一条记录
- sql 删除表中多余的重复记录(多个字段),只保留一条记录
- sql 删除表中多余的重复记录(多个字段),只保留一条记录
- List中的数据如何根据对象的某一个或多个字段排序
- sql按某字段过滤重复,且只保留某字段排序后最大或最小的记录
- mysql 根据字段删除重复记录
- mysql 根据某个字段去掉重复的记录
- mysql查询某字段重复的记录
- mysql根据一个字段查询重复数据
- mysql删除数据库表中重复数据(根据单个或多个字段)
- Angularjs 中 ui-sref 和 $state.go 如何传递单个多个参数和将对象作为参数
- python 画等边三角形
- Android 代码设置开机自启动App
- scrapy 爬虫程序一览
- 爬取51job的爬虫(python)
- MySQL根据某一个或者多个字段查找重复数据,并且保留某字段值最大的记录
- jsp 无法生成xml文件
- 用户管理系统
- android语音播报
- 内存溢出之Tomcat内存配置
- ubuntu设置软件默认打开方式,以.py文件打开方式为例
- Ubuntu 16.04环境SudaMod2.0编译笔记
- Emacs基本操作及应用
- Deepin15.4安装后配置小记