表结构:函数
经过分组找出筛选出count大于1的数据spa
select r_content, r_userid, count(*) from reviews GROUP BY r_content, r_userid having count(*) > 1
group by能够利用聚合函数(count、 sum、 avg)进行分组设计
having 对分组的数据进行下一步筛选code
经过inner join找出相同数据blog
select * from reviews a INNER JOIN (select r_content, r_userid, count(*) from reviews GROUP BY r_content, r_userid having count(*) > 1) b on a.r_content = b.r_content and a.r_userid = b.r_userid;
加行号md5
select a.*, if(@tmp = CONCAT(r_content, r_userid), @rownum := @rownum + 1, @rownum := 1) as rownum, @tmp := CONCAT(r_content, r_userid) from ( select a.* from reviews a INNER JOIN (select r_content, r_userid, count(*) from reviews GROUP BY r_content, r_userid having count(*) > 1) b on a.r_content = b.r_content and a.r_userid = b.r_userid) a, (select @rownum := 0, @tmp := '') b
取出行号大于的删除之it
delete from reviews where r_id in( select r_id from ( select a.*, if(@tmp = CONCAT(r_content, r_userid), @rownum := @rownum + 1, @rownum := 1) as rownum, @tmp := CONCAT(r_content, r_userid) from ( select a.* from reviews a INNER JOIN (select r_content, r_userid, count(*) from reviews GROUP BY r_content, r_userid having count(*) > 1) b on a.r_content = b.r_content and a.r_userid = b.r_userid) a, (select @rownum := 0, @tmp := '') b) a where rownum>1);
经过group_concat来组合id,并删除class
select group_concat(ids separator '|') as ids from( select group_concat(r_id) as ids ,r_content,r_userid,count(*) from reviews group by r_content,r_userid having count(*)>1) a
表设计:date
需求:若是有相同内容则不插入,记录插入相同数据的条数select
insert into news (news_title, news_abstract,news_code) values ('这是一条新闻','新闻内容是XXX',md5(concat('这是一条新闻','新闻内容是XXX'))) on duplicate key update dumpnum=dumpnum+1;