北京SEO

MYSQL中GROUP分组去除重复数据

2019/10/10/17:32:41  阅读:2574  来源:谷歌SEO算法  标签: AI科学家

用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分组去除重复数据

相关阅读

热门评论

木木老贼 木木老贼

互联网营销达人~

总篇数181

精选文章

RMAN中catalog和nocatalog区别介绍 小技巧:为Linux下的文件分配多个权限 zimbra8.5.1安装第三方签名ssl证书的步骤 解决mysql不能远程连接数据库方法 windows服务器mysql增量备份批处理数据库 mysql中slow query log慢日志查询分析 JavaScript跨域问题总结 Linux下负载均衡软件LVS配置(VS/DR)教程 mysql中权限参数说明 MYSQL(错误1053)无法正常启动

SEO最新算法