MYSQL中GROUP分组去除重复数据
发布:smiling 来源: PHP粉丝网 添加日期:2015-04-17 10:23:39 浏览: 评论:0
用mysql group分组去除重复数据小编还是头一次,以前都是使用distinct来过滤了,今天我们来介绍另一种另类的处理方法.
GROUP分组去除重复数据
- /**
- * 清除同一专题中重复导入的数据
- * @author tanteng
- * @date 2014.07.27
- */
- public function fuck_repeat(){
- set_time_limit(0);
- $sql = "SELECT `id` FROM `v95_special_content` GROUP BY `specialid`,`curl` HAVING COUNT(`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 = "DELETE from `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
- id name
- 1 a
- 2 b
- 3 c
- 4 c
- 5 b
- select distinct name from table
- //得到的结果是:
- name
- a
- b
- c
好像达到效果了,可是,我想要得到的是id值呢?改一下查询语句吧.
- select *, count(distinct name) from table group by name
- //结果:
- id name count(distinct name)
- 1 a 1
- 2 b 1
- 3 c 1
Tags: GROUP分组 MYSQL重复数据
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)