最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

数据库根据指定字段去重

来源:动视网 责编:小采 时间:2020-11-09 08:34:03
文档

数据库根据指定字段去重

数据库根据指定字段去重:需求:对一张用户表根据name/email/card_num字段去除重复数据;思路:用group by方法可以查询出'去重'后的数据,将这些数据存储到一张临时表中,然后将临时表的数据存储到指定的表中;误区及解决方案:group by方法只能获取部分字段(去重指定字
推荐度:
导读数据库根据指定字段去重:需求:对一张用户表根据name/email/card_num字段去除重复数据;思路:用group by方法可以查询出'去重'后的数据,将这些数据存储到一张临时表中,然后将临时表的数据存储到指定的表中;误区及解决方案:group by方法只能获取部分字段(去重指定字


需求:对一张用户表根据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.7s,基本满足现在的需求。

    更多MySQL相关技术文章,请访问MySQL教程栏目进行学习!

    文档

    数据库根据指定字段去重

    数据库根据指定字段去重:需求:对一张用户表根据name/email/card_num字段去除重复数据;思路:用group by方法可以查询出'去重'后的数据,将这些数据存储到一张临时表中,然后将临时表的数据存储到指定的表中;误区及解决方案:group by方法只能获取部分字段(去重指定字
    推荐度:
    标签: 数据 数据库 mysql
    • 热门焦点

    最新推荐

    猜你喜欢

    热门推荐

    专题
    Top