MySql数据库:数据查重、去重的实现
数据库的查重去重是java面试经常会被问到的问题,下面讲讲怎么实现这些,因为本人能力有限,所以只管实现,不考虑效率问题;
假设有一个表user,字段分别有id--nick_name--password--email--phone,分情况如下(注意删除多余记录时要创建临时表,不然会报错):
单字段(nick_name)
查出所有有重复记录的所有记录
select * from user where nick_name in
(select nick_name from user group by nick_name having count(nick_name)>1);
查出有重复记录的各个记录组中id最大的记录
select * from user where id in (select max(id) from user group by nick_name having count(nick_name)>1);
查出多余的记录,不查出id最小的记录
select * from user where nick_name in
(select nick_name from user group by nick_name having count(nick_name)>1)
and id not in
(select min(id) from user group by nick_name having count(nick_name)>1);
删除多余的重复记录,只保留id最小的记录
delete from user where nick_name in
(select nick_name from
(select nick_name from user group by nick_name having count(nick_name)>1) as tmp1)
and id not in
(select id from
(select min(id) from user group by nick_name having count(nick_name)>1) as tmp2);
多字段(nick_name,password)
查出所有有重复记录的记录
select * from user where (nick_name,password) in
(select nick_name,password from user group by nick_name,password where having count(nick_name)>1);
查出有重复记录的各个记录组中id最大的记录
select * from user where id in
(select max(id) from user group by nick_name,password where having count(nick_name)>1);
查出各个重复记录组中多余的记录数据,不查出id最小的一条
select * from user where (nick_name,password) in
(select nick_name,password from user group by nick_name,password having count(nick_name)>1)
and id not in
(select min(id) from user group by nick_name,password having count(nick_name)>1);
删除多余的重复记录,只保留id最小的记录
delete from user where (nick_name,password) in
(select nick_name,password from
(select nick_name,password from user group by nick_name,password having count(nick_name)>1) as tmp1)
and id not in
(select id from
(select min(id) id from user group by nick_name,password having count(nick_name)>1) as tmp2);
MySql数据库:数据查重、去重的实现相关推荐
- mysql添加用户查重的方法_mysql 开发技巧之JOIN 更新和数据查重/去重
主要涉及:JOIN .JOIN 更新.GROUP BY HAVING 数据查重/去重 1 INNER JOIN.LEFT JOIN.RIGHT JOIN.FULL JOIN(MySQL 不支持).CR ...
- 数据查重去重,数据匹配过程
帮助更多需要自动化解决工作的人们. 步骤:不完整,重复,错误,格式不规范数据 -> 数据清洗 -> 正确规范数据 -> 数据去重技术 -> 数据匹配. 使用过的一些相关软件,查 ...
- mysql千万数据查重_mysql查重 去除重复数据
1.根据one列查询重复的数据(根据单列判断重复) SELECT * FROM testdelete WHERE ONE IN (SELECT ONE FROM testdelete GROUP BY ...
- java导入Excel中数据查重的方法
今天查数据库数据的时候发现一个问题,明明添加了数据库查重的方法,如果导入文件中存在和数据库相同值的时候会提示并拒绝提交,但数据库还是出现了重复字段,一开始有点纳闷,后来发现原来是因为一个excel文件 ...
- linux mysql 数据文件,Linux下修改MySQL数据库数据文件路径的步骤
使用rpm安装方式安装完MySQL数据库后,数据文件的默认路径为/var/lib/mysql,然而根目录并不适合用于存储数据文件. 原路径:/var/lib/mysql 目标路径:/home/mysq ...
- mysql 定时同步数据_如何定时备份Mysql数据库数据?
这是为小白定制的专属<Linux轻松上手>系列.涵盖了linux常用指令.shell脚本等核心内容,浅显易懂,配合实操案例快速上手.目标就是帮助大家轻松上手linux,少走弯路! 上一篇如 ...
- linux的mysql主主_Linux下指定mysql数据库数据配置主主同步的实例
一. 概念:① 数据库同步 (主从同步 --- 主数据库写的同时 往从服务器写数据) ② 数据库同步 (主主同步 --- 两台数据库服务器互相写数据) 二. 举例 主主数据库同步服务器配置 数据库 ...
- shell如何控制文件读写不同时_如何定时备份Mysql数据库数据?
这是为小白定制的专属<Linux轻松上手>系列.涵盖了linux常用指令.shell脚本等核心内容,浅显易懂,配合实操案例快速上手.目标就是帮助大家轻松上手linux,少走弯路! 上一篇如 ...
- Elasticsearch安装及自动同步mysql数据库数据
2019独角兽企业重金招聘Python工程师标准>>> Elasticsearch安装及自动同步mysql数据库数据 1 环境: CentOS 6.4 x64 ...
最新文章
- 在asp.net(C#)中怎么获得一个目录的大小?
- 3dsmax 长动画导入 three.js 转变成 多个动画
- Weighted distance in sklearn KNN
- 基于局域网的扩展认证协议EAPOL Extensible Authentication Protocol
- java自动化测试报告_Java自动化测试框架-10 - TestNG之测试结果篇(详细教程)
- vue商城项目开发:浏览器自动访问、路由样式修改及定义和导入组件
- 在pandas中遍历DataFrame行
- Flutter 初尝:从 Java 无缝过渡,java开发面试笔试题
- Linux知识框架梳理
- 理解NLP中的卷积神经网络(CNN)
- 官网下的 demoMUI,a链接失效和点击事件失效
- 【VS2010安装教程】
- android 改机型玩王者,全机型60帧一键修改
- Java Web 项目基于IDEA的增量补丁打包插件
- mysql调查问卷_mysql – 解密数据库ER图用于问卷调查
- 几个开源即时通讯聊天软件推荐-带源码地址
- Python_抽奖游戏
- JS this指向总结
- DS_PTA18 图4 哈利·波特的考试
- 银行职业性格测试软件,2018银行春招:不要小看银行性格测试
热门文章
- M1芯片实现Kail虚拟机(无Parallels)
- 异形隔离java剧情_异形隔离攻略 系统上手教程 全剧情流程图文攻略(20)
- 《Dreamweaver CS6 完全自学教程》笔记 第十七章:Spry 框架技术
- 信号处理——Hilbert变换及谱分析
- 《JAVA并发编程的艺术》之Java内存模型
- 计算机网络 5电路交换
- 华为交换机console密码相关
- Nginx安装及常用优化和配置
- 报错:The path is not a valid path to the xxx kernel headers.
- 安装 Node.js