表结构:

需求:找到相同的内容并删除

方法1:

通过分组找出筛选出count大于1的数据

select r_content, r_userid, count(*) from reviews GROUP BY r_content, r_userid having count(*) > 1

group by可以利用聚合函数(count、 sum、 avg)进行分组

having 对分组的数据进行下一步筛选

 通过inner join找出相同数据

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;

加行号

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

取出行号大于的删除之

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);

方法2:

通过group_concat来组合id,并删除

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

有重复数据不插入或更新的处理方法

表设计:

需求:如果有相同内容则不插入,记录插入相同数据的条数

insert  into news (news_title, news_abstract,news_code) values ('这是一条新闻','新闻内容是XXX',md5(concat('这是一条新闻','新闻内容是XXX'))) on duplicate key update dumpnum=dumpnum+1;

sql-- 找到重复数据并删除、有重复数据不插入或更新的处理方法的更多相关文章

  1. SQL根据B表内容修改A表内容,查询表中重复记录,删除掉重复项只保留一条

    以下sql是a,b两张表通过关联条件id修改a表值,如果b表有重复数据记录,选第一条更新,红色条件为附加限制条件,具体视情况而定: UPDATE a SETname = b.fname,pwd = b ...

  2. mysql只保留一条有效数据,删除其他重复的数据

    delete from TableName where id in( SELECT ID FROM(SELECT * FROM TableName t0WHERE(t0.Field1,t0.Field ...

  3. 【shell】定时删除DB2表数据

    使用db2的时候,有时候需要对表数据进行删除,防止数据太多,造成数据库空间满了 以下是一个定时删除表tmp,tm1中id为1的数据的脚本 #!/bin/sh ##------------------- ...

  4. MYSQL中delete删除多表数据

    MYSQL中delete删除多表数据 DELETE删除多表数据,怎样才能同时删除多个关联表的数据呢?这里做了深入的解释: 1. delete from t1 where 条件 2.delete t1 ...

  5. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(18)-过滤器的使用和批量删除数据(伪删除和直接删除)

    原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(18)-过滤器的使用和批量删除数据(伪删除和直接删除) ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)   ...

  6. MySQL插入、更新、删除数据

    1.插入数据:由于下表的id会自增,故赋值null. 注意:字符串用'   '单引号,不能双引号,英文状态下. 可以写上部分属性名进行插入操作,如bookTypeId没写,默认NULL. 也可以写上所 ...

  7. mysql中删除重复记录,并保留重复数据中的一条数据的SQL语句

    正好想写一条删除重复语句并保留一条数据的SQL,网上查了一部分资料写的很详细,但还是在这里写下自己的理解,以遍后续学习 .如下: 表字段和数据: SQL语句: [sql] view plain cop ...

  8. 用sql删除数据库重复的数据的方法

      /***********************************************两个意义上的重复记录:1.是完全重复的记录,也即所有字段均重复的记录,2.是部分关键字段重复的记录, ...

  9. SQL Server 一列或多列重复数据的查询,删除

    业务需求 最近给公司做一个小工具,把某个数据库(数据源)的数据导进另一个数据(目标数据库).要求导入目标数据库的数据不能出现重复.但情况是数据源本身就有重复的数据.所以要先清除数据源数据. 于是就把关 ...

随机推荐

  1. framebuffer 知识点

    设备文件是在/dev/目录下设备文件有主设备号,次设备号.当操作设备文件, 系统会根据设备文件的设备号找到相应的设备驱动(驱动在内核注册时已指定使用的设备号),并调用相应的功能.  open ---& ...

  2. 正则表达式中 /s 可以帮助“.”匹配所有的字符,包括换行,从而实现【\d\D】的功能

    正则表达式中 /s 可以帮助“.”匹配所有的字符,包括换行,从而实现[\d\D]的功能

  3. 编译原理_P1004

    龙书相关知识点总结 //*************************引论***********************************// 1. 编译器(compiler):从一中语言( ...

  4. linux中find,locate,whereis,which关系和用法

    主要有find,locate,whereis,which等 1. find是最常用也是最强大的查找命令,它可以查找任何类型的文件. find命令的一般格式为:find <指定目录>< ...

  5. IPC之——信号量集

    信号量集用于对存在竞争的资源加锁 1.semId=semget(key,nsems,semflg) key:为信号量集名称,可以指定为0455等数字,也可以为PC_PRIVATE nsems:创建几个 ...

  6. CLOUD列表字段数据汇总

  7. swagger-ui不显示问题定位

    1. 现象1 正常情况是 group会显示default/v2/api-docs 不知道是什么原因, 一个app可以展示,但另一个app不展示,配置也基本相同 1.1 定位过程 正常的app访问时的结 ...

  8. Grails Controller - respond 方法

    基本用法 官方文档:http://docs.grails.org/latest/ref/Controllers/respond.html 为当前 respond 语句所在 action 所对应的页面返 ...

  9. C++语言堆栈的详细讲解

    本文主要向大家介绍了C++语言堆栈的详细讲解,通过具体的内容向大家展示,希望对大家学习C++语言有所帮助. 一.预备知识—程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 1.栈区 ...

  10. Google DevTools Explanation

    Evaluating network performance The Network panel records information about each network operation in ...