300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > mysql分组去掉重复记录_MYSQL中GROUP分组去除重复数据

mysql分组去掉重复记录_MYSQL中GROUP分组去除重复数据

时间:2020-10-17 09:03:26

相关推荐

mysql分组去掉重复记录_MYSQL中GROUP分组去除重复数据

GROUP分组去除重复数据

/**

* 清除同一专题中重复导入的数据

* @author tanteng

* @date .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'];

}

$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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。