MYSQL中GROUP分组去除重复数据
2019/10/10/17:32:41 阅读:2574 来源:谷歌SEO算法 标签:
AI科学家
用mysql group分组去除重复数据小编还是头一次,以前都是使用distinct来过滤了,今天我们来介绍另一种另类的处理方法.
GROUP分组去除重复数据
- /**
- *清除同一专题中重复导入的数据
- *@authortanteng
- *@date2014.07.27
- */
- publicfunctionfuck_repeat(){
- set_time_limit(0);
- $sql="SELECT`id`FROM`v95_special_content`GROUPBY`specialid`,`curl`HAVINGCOUNT(`curl`)>1";
- $result=$this->db->query($sql);
- while($r=mysql_fetch_assoc($result)){
- $ids[]=$r['id'];//开源软件:phpfensi.com
- }
- $ids=implode(",",$ids);
- if(!$ids){
- showmessage('没有重复数据!',HTTP_REFERER);exit;
- }
- $sql2="DELETEfrom`v95_special_content`where`id`in($ids)";
- $this->db->query($sql2);
- showmessage('执行成功,删除了'.$this->db->affected_rows().'条重复数据!',HTTP_REFERER);
- }
我们分析一下这条sql语句:
SELECT `id` FROM `v95_special_content` GROUP BY `specialid`,`curl` HAVING COUNT(`curl`)>1
这里根据两个字段进行了分组,分别是specialid和curl,就是说这两个字段同时相同的作为条件查询,having是group语句的条件,相当于where,后面就是计算这样的条数.
利用mysql的group分组就实现了去除数据库中多个字段相同的重复数据的操作.
补充:当然还可以使用distinct这个关键字来过滤掉多余的重复记录只保留一条.
- table
- idname
- 1a
- 2b
- 3c
- 4c
- 5b
- selectdistinctnamefromtable
- //得到的结果是:
- name
- a
- b
- c
好像达到效果了,可是,我想要得到的是id值呢?改一下查询语句吧.
- select*,count(distinctname)fromtablegroupbyname
- //结果:
- idnamecount(distinctname)
- 1a1
- 2b1
- 3c1
热门评论