• 创建表和測试数据

/*
表结构 */

DROPTABLEIFEXISTS
`t1`;

CREATETABLEIFNOTEXISTS
`t1`(

`id` INT(1)NOTNULL
AUTO_INCREMENT,

`name` VARCHAR(20)NOTNULL,

`add`VARCHAR(20)NOTNULL,

PRIMARYKEY(`id`)

)Engine=InnoDB;



/*
插入測试数据 */

INSERTINTO
`t1`(`name`,`add`)VALUES

('abc',"123"),

('abc',"123"),

('abc',"321"),

('abc',"123"),

('xzy',"123"),

('xzy',"456"),

('xzy',"456"),

('xzy',"456"),

('xzy',"789"),

('xzy',"987"),

('xzy',"789"),

('ijk',"147"),

('ijk',"147"),

('ijk',"852"),

('opq',"852"),

('opq',"963"),

('opq',"741"),

('tpk',"741"),

('tpk',"963"),

('tpk',"963"),

('wer',"546"),

('wer',"546"),

('once',"546");

执行完上面的SQL,能够用
SELECT*FROM
`t1` 測试一下。


  • 查找全部反复的数据

反复数据仅仅显示当中一条:

/* 查找全部反复数据,反复数据仅仅显示一次 */
SELECT
*
FROM
`t1`
GROUP BY `name`
HAVING COUNT(1) > 1
#HAVING COUNT(1) = 1 #这条语句表示显示当中不反复的数据

效果例如以下:

    id  name    add     

------  ------  --------

     1  abc     123     

    12  ijk     147     

    15  opq     852     

    18  tpk     741     

    21  wer     546     

     5  xzy     123     


反复数据每条都显示

/*
查找全部反复数据(反复数据反复显示 */

SELECT
t1.*
FROM
t1,
(SELECT
t1.name,
t1.add
FROM
t1
GROUP BY `name`,
`add`
HAVING COUNT(1) > 1) AS `t2`
WHERE `t1`.`name` = `t2`.`name`
AND `t1`.`add` = `t2`.`add`

查询结果例如以下:


    id  name    add     

------  ------  --------

     1  abc     123     

     2  abc     123     

     4  abc     123     

     6  xzy     456     

     7  xzy     456     

     8  xzy     456     

     9  xzy     789     

    11  xzy     789     

    12  ijk     147     

    13  ijk     147     

    19  tpk     963     

    20  tpk     963     

    21  wer     546     

    22  wer     546     

  • 显示全部数据(反复数据仅仅显示一次)

以下的SQL简单高速有效,但不能保证反复字段的records显示哪一个record。

SELECT 

    * 

FROM

    t1 

GROUP BY NAME 

#having count(*) > 1 #加上这条语句,反复字段的records仅仅显示一次

  • 删除反复数据:

1 最简单高速 的方法:

1. 新建一个一样表结构的表,经反复内容字段设置为unique

2. 然后运行语句:INSERT IGNORE INTO new_table SELECT * FROM old_table

对于本题就是:

1. 新建t1_copy,然后将name。add设置为主键

2.运行INSERT IGNORE INTO t1_copy SELECT * FROM t1 ORDER BY t1.`id`。 OK

2 笨方法UNION(数据量大时非常慢):

SELECT
*
FROM
t1
GROUP BY `name`,
`add`
HAVING COUNT(1) > 1
UNION
SELECT
*
FROM
t1
GROUP BY `name`,
`add`
HAVING COUNT(1) = 1
ORDER BY id

注意:

这里表中有一个主键id。若没有主键id。数据量大时会非常慢。这样能够人为插入一个主键id。如

參考文章:




转载请注明出处:http://blog.csdn.net/acema/article/details/37692867




版权声明:本文博主原创文章,博客,未经同意不得转载。

重复记录(duplicate records)相关运营数据的更多相关文章

  1. Oracle删除重复记录只保留一条数据的几种方法

    1. 问题描述 BBSCOMMENT表为BBSDETAIL的从表,记录商户评价信息.因为数据倒腾来倒腾去的,有很多重复数据.表结构如下: COMMENT_ID NOT NULL NUMBER --主键 ...

  2. 删除Mysql数据表中多余的重复记录的sql语句

    数据表 sniper_tb 中存在主键 id,字段url,现需要在url字段上添加 unique,但由于url存在重复记录,导致添加失败. 如何删除表中多余的url重复记录,仅保持一条? 思路一 将 ...

  3. mysql 数据表中查找、删除重复记录

    为了性能考虑,在阅读之前提醒大家,如果有子查询,子查询查询到的数据最好不要超过总数据量的30%. 查询有重复数据的记录 select * from F group by a,b,c,d having ...

  4. mysql插入数据与删除重复记录的几个例子(收藏)

    mysql插入数据与删除重复记录的几个例子 12-26shell脚本实现mysql数据的批量插入 12-26mysql循环语句插入数据的例子 12-26mysql批量插入数据(insert into ...

  5. oracle 快速删除大批量数据方法(全部删除,条件删除,删除大量重复记录)

    oracle 快速删除大批量数据方法(全部删除,条件删除,删除大量重复记录) 分类: ORACLE 数据库 2011-05-24 16:39 8427人阅读 评论(2) 收藏 举报 oracledel ...

  6. Sql Server删除数据表中重复记录 三种方法

    本文介绍了Sql Server数据库中删除数据表中重复记录的方法. [项目]数据库中users表,包含u_name,u_pwd两个字段,其中u_name存在重复项,现在要实现把重复的项删除![分析]1 ...

  7. Datatable 中的数据查询(查询不重复记录)

    http://blog.csdn.net/lovexiaoxiao/article/details/3734932 //在sql中我们使用distinct查询不重复记录    //然而我在项目中表关系 ...

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

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

  9. oracle中查找和删除重复记录的几种方法总结

    平时工作中可能会遇到当试图对库表中的某一列或几列创建唯一索引时,系统提示 ORA-01452 :不能创建唯一索引,发现重复记录. 下面总结一下几种查找和删除重复记录的方法(以表CZ为例): 表CZ的结 ...

随机推荐

  1. Object之克隆对象clone 和__clone()函数

    在前面的PHP面向对象之对象和引用,"$b=$a"的方式复制对象传递的是对象的地址,而不是传递对象的值(内容),我们可以通过克隆对象来实现对对象的内容和引用的复制 使用传址引用的方 ...

  2. [我的疑问]String? = "Skiy Chan" 中的问号是什么意思?

    var optionalName : String? = "Skiy Chan" String? = "Skiy Chan" 中的问号是什么意思?目前还在看ap ...

  3. phpcms v9栏目列表调用每一篇文章内容方法1

    我们先来看下默认栏目调用的代码: 复制代码代码如下:{pc:content action="lists" catid="$catid" num="25 ...

  4. C语言变量声明加冒号的用法

    有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位.例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可.为了节省存储空间,并使处理简便,C语言又提供了一种数据结构 ...

  5. Django 基础

    Django 的路由系统 在 django 的 URLconf 配置文件 urls.py 中根据一个 URL 对应 views 的一个函数来处理用户的请求. 1.基本的 urls 对应 urlpatt ...

  6. 关于scroll无法绑定的问题

    关于jQuery的scroll([[data],fn])事件, 概述是:当用户滚动指定的元素(元素包括:所有可滚动的元素和 window 对象)时,会触发该事件. 如绑定窗口对象: $(window) ...

  7. 你一定要知道的关于Linux文件目录操作的12个常用命令

    写在前面: 1,<你一定要知道的关于Linux文件目录操作的12个常用命令>是楼主收集的关于Linux文件目录操作最常用的命令,包括文件或目录的新建.拷贝.移动.删除.查看等,是开发人员操 ...

  8. Codeforces Round #315 (Div. 2)

    这次可以说是最糟糕的一次比赛了吧, 心没有静下来好好的去思考, 导致没有做好能做的题. Problem_A: 题意: 你要听一首时长为T秒的歌曲, 你点击播放时会立刻下载好S秒, 当你听到没有加载到的 ...

  9. 用word2013写博客

    第一次使用,添加博客账户时碰到一个奇怪的问题,先输入用户名,然后密码只能输入两个字符,后来先输入密码再输入用户名才解决,很神奇~

  10. hdu 1576 A/B 拓展欧几里得算法

    A/B Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...