• 创建表和測试数据

/*
表结构 */

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. 探讨 yum 与 rpm 的安装包数量

    安装包数量不相等 [root@localhost ~]# rpm -qa | wc –l #列出所有被安装的rpm package 422 [root@localhost ~]# yum list i ...

  2. 鸟哥的linux私房菜——第12章 正则表达式与文件格式化处理

    12.1什么是正则表达式 正则表达式就是处理字符串的方法,它是以行为单位来进行字符串的处理行为,正则表达式通过一些特殊符号的辅助,可以让用户轻易达到查找.删除.替换某特定字符串的处理程序. vi.gr ...

  3. Phonegap 3.0 获取当前地址位置

    新版本的cordova 3.0 中,使用官方的示例可直接获取当前手机的地理位置,前提是手机开启了gps,或可联网. 获取到的是经纬度坐标值等信息,可通过google api 实现通过经纬度获取当前地理 ...

  4. ios7新特性1-UI变化、UIKit动态行为支持与Text Kit新接口

    iOS 7.0新特性1 iOS 7的UI经过了重新设计.另外,iOS7中引入了新的动画系统,便于创建2D和2.5D的游戏.多任务支持提升,点对点通讯以及其他重要的特征使iOS7相对于以往的SDK来说发 ...

  5. websphere性能设置和日常维护

    一. 确认磁盘空间是否满足要求1. WebSphere 应用服务器自身代码的占用空间.这个空间一般在1G左右,在不同的系统平台上略有差异. 2. 概要文件所占的空间.WebSphere应用服务器V6. ...

  6. 【Java】Java里String 的equals和==

    Java里面有对象和对象的引用的概念,在String方面,==比较的是引用,equals比较的是对象的具体值. String s1 = new String("abc");Stri ...

  7. Storm学习笔记

    1.如何让一个spout并行读取多个流? 方法:任何spout.bolts组件都可以访问TopologyContext.利用这个特性可以让Spouts的实例之间划分流. 示例:获取到storm集群sp ...

  8. uva 11731 - Ex-circles

    题意:已知三角形ABC的3条边长,求三角形ABC 的面积,以及阴影部分的总面积. #include<iostream> #include<cstdio> #include< ...

  9. MSBuild 教程(2)

    如果你没有看过第一部分教程,请先看完后再回到这里来继续我们的第二部分. 我们下一步的工作是发布我们的网站,也就是创建Publish target. 为了能使我们的target工作,我们需要给它传递两个 ...

  10. C++ Prime:指针

    指针与引用的区别:1.指针本身就是一个对象,允许对指针赋值和拷贝,而且在指针的生命周期内它可以先后指向几个不同的对象:其二:指针无需在定义时赋值.指针在块作用域内定义如果没有被初始化,也将拥有一个不确 ...