数据库的查重去重是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数据库:数据查重、去重的实现相关推荐

  1. mysql添加用户查重的方法_mysql 开发技巧之JOIN 更新和数据查重/去重

    主要涉及:JOIN .JOIN 更新.GROUP BY HAVING 数据查重/去重 1 INNER JOIN.LEFT JOIN.RIGHT JOIN.FULL JOIN(MySQL 不支持).CR ...

  2. 数据查重去重,数据匹配过程

    帮助更多需要自动化解决工作的人们. 步骤:不完整,重复,错误,格式不规范数据 -> 数据清洗 -> 正确规范数据 -> 数据去重技术 -> 数据匹配. 使用过的一些相关软件,查 ...

  3. mysql千万数据查重_mysql查重 去除重复数据

    1.根据one列查询重复的数据(根据单列判断重复) SELECT * FROM testdelete WHERE ONE IN (SELECT ONE FROM testdelete GROUP BY ...

  4. java导入Excel中数据查重的方法

    今天查数据库数据的时候发现一个问题,明明添加了数据库查重的方法,如果导入文件中存在和数据库相同值的时候会提示并拒绝提交,但数据库还是出现了重复字段,一开始有点纳闷,后来发现原来是因为一个excel文件 ...

  5. linux mysql 数据文件,Linux下修改MySQL数据库数据文件路径的步骤

    使用rpm安装方式安装完MySQL数据库后,数据文件的默认路径为/var/lib/mysql,然而根目录并不适合用于存储数据文件. 原路径:/var/lib/mysql 目标路径:/home/mysq ...

  6. mysql 定时同步数据_如何定时备份Mysql数据库数据?

    这是为小白定制的专属<Linux轻松上手>系列.涵盖了linux常用指令.shell脚本等核心内容,浅显易懂,配合实操案例快速上手.目标就是帮助大家轻松上手linux,少走弯路! 上一篇如 ...

  7. linux的mysql主主_Linux下指定mysql数据库数据配置主主同步的实例

    一. 概念:① 数据库同步  (主从同步 --- 主数据库写的同时 往从服务器写数据) ② 数据库同步  (主主同步 --- 两台数据库服务器互相写数据) 二. 举例 主主数据库同步服务器配置 数据库 ...

  8. shell如何控制文件读写不同时_如何定时备份Mysql数据库数据?

    这是为小白定制的专属<Linux轻松上手>系列.涵盖了linux常用指令.shell脚本等核心内容,浅显易懂,配合实操案例快速上手.目标就是帮助大家轻松上手linux,少走弯路! 上一篇如 ...

  9. Elasticsearch安装及自动同步mysql数据库数据

    2019独角兽企业重金招聘Python工程师标准>>> Elasticsearch安装及自动同步mysql数据库数据 1           环境: CentOS  6.4  x64 ...

最新文章

  1. 在asp.net(C#)中怎么获得一个目录的大小?
  2. 3dsmax 长动画导入 three.js 转变成 多个动画
  3. Weighted distance in sklearn KNN
  4. 基于局域网的扩展认证协议EAPOL Extensible Authentication Protocol
  5. java自动化测试报告_Java自动化测试框架-10 - TestNG之测试结果篇(详细教程)
  6. vue商城项目开发:浏览器自动访问、路由样式修改及定义和导入组件
  7. 在pandas中遍历DataFrame行
  8. Flutter 初尝:从 Java 无缝过渡,java开发面试笔试题
  9. Linux知识框架梳理
  10. 理解NLP中的卷积神经网络(CNN)
  11. 官网下的 demoMUI,a链接失效和点击事件失效
  12. 【VS2010安装教程】
  13. android 改机型玩王者,全机型60帧一键修改
  14. Java Web 项目基于IDEA的增量补丁打包插件
  15. mysql调查问卷_mysql – 解密数据库ER图用于问卷调查
  16. 几个开源即时通讯聊天软件推荐-带源码地址
  17. Python_抽奖游戏
  18. JS this指向总结
  19. DS_PTA18 图4 哈利·波特的考试
  20. 银行职业性格测试软件,2018银行春招:不要小看银行性格测试

热门文章

  1. M1芯片实现Kail虚拟机(无Parallels)
  2. 异形隔离java剧情_异形隔离攻略 系统上手教程 全剧情流程图文攻略(20)
  3. 《Dreamweaver CS6 完全自学教程》笔记 第十七章:Spry 框架技术
  4. 信号处理——Hilbert变换及谱分析
  5. 《JAVA并发编程的艺术》之Java内存模型
  6. 计算机网络 5电路交换
  7. 华为交换机console密码相关
  8. Nginx安装及常用优化和配置
  9. 报错:The path is not a valid path to the xxx kernel headers.
  10. 安装 Node.js