MYSQL中GROUP分组去除重复数据

木木老贼 互联网营销达人~

用mysql group分组去除重复数据小编还是头一次,以前都是使用distinct来过滤了,今天我们来介绍另一种另类的处理方法.

GROUP分组去除重复数据

  1. /**
  2. *清除同一专题中重复导入的数据
  3. *@authortanteng
  4. *@date2014.07.27
  5. */
  6. publicfunctionfuck_repeat(){
  7. set_time_limit(0);
  8. $sql="SELECT`id`FROM`v95_special_content`GROUPBY`specialid`,`curl`HAVINGCOUNT(`curl`)>1";
  9. $result=$this->db->query($sql);
  10. while($r=mysql_fetch_assoc($result)){
  11. $ids[]=$r['id'];//开源软件:phpfensi.com
  12. }
  13. $ids=implode(",",$ids);
  14. if(!$ids){
  15. showmessage('没有重复数据!',HTTP_REFERER);exit;
  16. }
  17. $sql2="DELETEfrom`v95_special_content`where`id`in($ids)";
  18. $this->db->query($sql2);
  19. showmessage('执行成功,删除了'.$this->db->affected_rows().'条重复数据!',HTTP_REFERER);
  20. }

我们分析一下这条sql语句:

SELECT `id` FROM `v95_special_content` GROUP BY `specialid`,`curl` HAVING COUNT(`curl`)>1

这里根据两个字段进行了分组,分别是specialid和curl,就是说这两个字段同时相同的作为条件查询,having是group语句的条件,相当于where,后面就是计算这样的条数.

利用mysql的group分组就实现了去除数据库中多个字段相同的重复数据的操作.

补充:当然还可以使用distinct这个关键字来过滤掉多余的重复记录只保留一条.

  1. table
  2. idname
  3. 1a
  4. 2b
  5. 3c
  6. 4c
  7. 5b
  8. selectdistinctnamefromtable
  9. //得到的结果是:
  10. name
  11. a
  12. b
  13. c

好像达到效果了,可是,我想要得到的是id值呢?改一下查询语句吧.

  1. select*,count(distinctname)fromtablegroupbyname
  2. //结果:
  3. idnamecount(distinctname)
  4. 1a1
  5. 2b1
  6. 3c1

相关广告
  • MYSQL中GROUP分组去除重复数据 MYSQL中GROUP分组去除重复数据 MYSQL中GROUP分组去除重复数据
相关阅读

MYSQL中GROUP分组去除重复数据

2019/10/10 17:32:41 | 谷歌SEO算法 | AI科学家