需求:对一张用户表根据name/email/card_num字段去除重复数据;

思路:用group by方法可以查询出'去重'后的数据,将这些数据存储到一张临时表中,然后将临时表的数据存储到指定的表中;

误区及解决方案:group by方法只能获取部分字段(去重指定字段),不能一次获取到完整的数据,但是可以通过max函数获取group by结果集中的id,再根据id集合查询出全部的记录。

测试思路

  • 查询去重后的数据
SELECT max(id) as id,name,email,card_num FROM users GROUP BY name,email,card_num;
  • 从去重后的数据中获取id集合
SELECT ID from (SELECT max(id) as id,name,email,card_num FROM users GROUP BY name,email,card_num) as T;
  • 根据去重后的数据中获取id集合,从源数据中获得记录列表
SELECT * from users where id in (SELECT ID from (SELECT max(id) as id,name,email,card_num FROM users GROUP BY name,email,card_num) as T);

实际方法

  • 根据去重后的数据中获取id集合,从源数据中获得记录列表,将这些列表数据存入一个临时表中
create TEMP TABLE tmp_data as SELECT * from users where id in (SELECT ID from (SELECT max(id) as id,name,email,card_num FROM users GROUP BY name,email,card_num) as T);
  • 将临时表中的数据存入指定的数据表中,完毕
insert into users_copy1 select * from tmp_data;

检测

  • 检测结果是不是和第一步查询去重后的数据总数相同
select count(*) from users_copy1;

测试结果:

1.4w条数据中有2300条数据重复,实际运行结果为0.07s,基本满足现在的需求。

SQL数据库根据指定字段去重相关推荐

  1. mysql中以指定字段去重_数据库根据指定字段去重

    需求:对一张用户表根据name/email/card_num字段去除重复数据: 思路:用group by方法可以查询出'去重'后的数据,将这些数据存储到一张临时表中,然后将临时表的数据存储到指定的表中 ...

  2. 安装sql数据库出现指定的驱动程序无效的问题

    安装sql数据库出现指定的驱动程序无效的问题 这个问题出现的原因是因为你的系统文件损坏,你的数据库安装环境损坏的问题. 解决方法: 1.首先用数据库修复工具修复数据库安装环境:如果有需要这个软件的,请 ...

  3. php根据指定字段去重,php二维数组根据某个字段去重

    php的二维数组根据某个字段去重,在这默认为二维数组的结构是一样的,现在根据二维数组里的id字段去重,把id相同的重复的元素去掉 /** * 二维数组根据某个字段去重 * @param array $ ...

  4. Oracle数据库在指定字段后新增字段

    记录一下数据库中为表增加字段,且在指定字段后新增: mysql数据库的话比较简单通过一下sql语句即可实现: -- 为表t在B字段后新增字段 alter table t add column fild ...

  5. java steam 去重_java steam List指定字段去重

    如:角色去重处理 baseRoleList = baseRoleList.stream().collect(Collectors.collectingAndThen(Collectors.toColl ...

  6. sql中按照指定字段排序失效

    场景描述: 按照查询指定类型的运动勋章,并按照勋章对应的天数进行升序排序,但是查询出来的结果是按照降序进行排序. 原因: 查看数据类型发现数据库中的days字段是varchar类型,对于mysql来说 ...

  7. 给SQL数据库表和字段添加描述信息

    在创建数据库表时,有时怕忘记了字段的作用,要给表的字段加上一些说明文字.而以前要经常切换到表的设计方式去添加一些说明文字,这样总觉得比较麻烦. 刚好查了一下数据库的联机丛书发现还有这样的命令,现在我把 ...

  8. Mysql去重查询(根据指定字段去重)

    在日常数据查询中,多有需要进行数据去重的查询,或删除重复数据的情况,以下罗列集中数据去重查询: 1.根据全部字段的去重查询: select distinct * from table 2.根据某些字段 ...

  9. stream流map 多个字段_stream流根据对象指定字段去重

    先封装一个去重的方法 import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.fun ...

最新文章

  1. matplotlib 子图超过4个_走进Matplotlib世界(四)
  2. java byte 判断相等_转发收藏 | 史上最全Java面试题+面试网站推荐!(含答案)
  3. 朴素贝叶斯网络matlab实现_基于朴素贝叶斯的文本分类方法实战
  4. 从命令式功能到纯功能性,然后再返回:Monads与范围内的延续
  5. Install/Remove of the Service Denied错误解决
  6. 二 jQuery 语法
  7. oracle进程瞬间暴增,oracle goldengate ogg 源段传输进程lag延迟不断增加的原因?
  8. .net实现URL重写
  9. MySQL concat函数使用详解
  10. php base64 gzip加密,PHP base64+gzinflate压缩加密和解密算法
  11. 不要做浮躁的软件工程师——经典
  12. 【论文阅读】Hierarchical Reinforcement Learning for Air-to-Air Combat 基于分层强化学习的空战决策
  13. python 单位根检验代码_Python中ADF单位根检验实现查看结果的方法
  14. 分治算法之循环赛程日志表
  15. 将保护清理不良资产的银行家:Arun Jaitley在评审会议
  16. 原生JS实现动态返回顶部
  17. BME相关SCI期刊
  18. OCam 录制,可变帧率、码率及恒定帧率、码率详解
  19. 倩女幽魂手游服务器维护时间,倩女幽魂手游12月29日在线维护公告
  20. Arm、Intel 和 AMD 服务器 CPU未来2年市场发展分析

热门文章

  1. Vue中的this.$store.state.xx.xx
  2. php spry文本域_SPRY验证文本域之用户名称
  3. php 转换成string,在PHP中将数字(1,2,3)转换为string(一,二,三)
  4. 简单工厂、工厂、抽象工厂
  5. 微信小程序3D轮播图实现
  6. 随笔杂记(十)——C++:C4996报错解决方法
  7. MATLAB根据经纬度格网数据画地图
  8. vue-router的实现
  9. JSON格式转MAP的6种方法
  10. Last Day Of Summer