`

mysql 删除重复数据只保留一条

阅读更多
DELETE FROM 表名 WHERE ID IN (
SELECT * FROM
(SELECT MAX(ID) FROM 表名 WHERE ... GROUP BY MSG HAVING COUNT(MSG) > 1)
AS b);

注意事项:MSG为重复字段 ID一定要是 唯一字段 ,如果ID代表的重复字段 那么就删除了所有的数据,BE CARE

上面这句SQL:有一点问题 不知道大家发现没有 这句SQL只会删除重复数据中ID最大的一条 也就是说有3条重复数据的话 就删除最后插入的那一条。

谢谢 网友的评论 让我纠正这些错误。

下面是正确版本:

思想:删除所有重复字段 保留重复字段中最早插入的

DELETE FROM TABLE_NAME WHERE MSG IN (
SELECT * FROM
(SELECT MSG FROM TABLE_NAME WHERE FLAG = 3  GROUP BY MSG HAVING COUNT(MSG) > 1)
AS b)
AND ID NOT IN (SELECT * FROM
(SELECT MIN(ID) FROM TABLE_NAME WHERE FLAG = 3  GROUP BY MSG HAVING COUNT(MSG) > 1)
AS c)


TABLE_NAME:表名
MSG:重复字段
ID:唯一字段
0
1
分享到:
评论
6 楼 感受微风 2016-04-25  
city_moon 写道
ID如果不是数字类型的呢?比如是UUID的呢?

[img]

[/img]

查询是可以比较出大小的
5 楼 city_moon 2016-04-15  
ID如果不是数字类型的呢?比如是UUID的呢?
4 楼 感受微风 2016-01-05  
不是not in ,not in 一定要慎用
3 楼 下雨DE天空 2016-01-05  
确定不是not in?
2 楼 感受微风 2016-01-05  
可以自己试一下
1 楼 qq65827 2016-01-04  
这sql有问题吧

相关推荐

    mysql查找删除重复数据并只保留一条实例详解

    主要介绍了mysql查找删除重复数据并只保留一条实例详解的相关资料,需要的朋友可以参考下

    MySQL查询重复数据(删除重复数据保留id最小的一条为唯一数据)

    查重是我们在工作中经常会遇到的一个需求,下面这篇文章主要给大家介绍了关于MySQL查询重复数据(删除重复数据保留id最小的一条为唯一数据)的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有...

    SQL对冗余数据的删除重复记录只保留单条的说明

    已知一个存储整数的顺序表La,试构造顺序表Lb,要求顺序表Lb中只包含顺序表La中所有值不相同的数据元素。 算法思路: 先把顺序表La的第一个元素付给顺序表Lb,然后从顺序表La的第2个元素起,每一个元素与顺序表Lb中...

    MySQL 删除数据库中重复数据方法小结

    刚开始,根据我的想法,这个很简单嘛,上sql语句 delete from zqzrdp where tel in (select min(dpxx_id) from ...1. 查询需要删除的记录,会保留一条记录。 select a.id,a.subject,a.RECEIVER from test1 a left jo

    解析mysql中:单表distinct、多表group by查询去除重复记录

    group bydistinct 查询多表时,left join 还有效,全连接无效,在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供有distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用它来返回不...

    打造Mysql最新版的IP地址数据库-将纯真IP数据库导入Mysql

    保留的最后一行类似于“255.255.255.0 255.255.255.255 纯真网络 2011年10月05日IP数据” 依次替换“9个空格”为“||”,替换“8个空格”为“||”,。。。。。。替换“1个空格”为“||”. 分别替换特殊字符“'()”...

    MySQL命令大全

    如一个只进行数据插入的用户不应赋予其删除数据的权限。MySql的用户管理是通过User表来实现的,添加新用户常用的方法有两个,一是在User表插入相应的数据行,同时设置相应的权限;二是通过GRANT命令创建具有某种权限...

    mysql数据库的基本操作语法

    foreign key:外键,指定该列记录属于主表中的一条记录,参照另一条数据 check:检查,指定一个表达式,用于检验指定数据 MySQL不支持check约束,但可以使用check约束,而没有任何效果; 根据约束数据列限制,约束...

    MYSQL常用命令大全

    如一个只进行数据插入的用户不应赋予其删除数据的权限。MySql的用户管理是通过 User表来实现的,添加新用户常用的方法有两个,一是在User表插入相应的数据行,同时设置相应的权限;二是通过GRANT命令创建具有某种...

    2009达内SQL学习笔记

    select:从一个或多个表中检索一个或多个数据列。包含信息:想选择什么表,从什么地方选择。必须要有From子句。(最常用) 当从多张表里查询的时候,会产生笛卡尔积;可用条件过滤它。 当两个表有相同字段时必须加...

    P2P视频技术源码(VC)

    会重复发送LOGIN消息, 这时需要检查这一客户端是否已经在Session列表中, 第三, 当 客户端发送消息时, 需要找到相应的Session. 为了避免这些查询, 分别使用了如下方法. 首先, 建立一个Hash表, 开始的时候所有空闲...

    Java面试宝典2020修订版V1.0.1.doc

    43、删除重复数据只保留一条。 55 44、一个几千万数据,发现数据查询很慢,怎么办? 55 六、Java高级部分 56 1、java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用...

    P2P视频播放器 详细制作实例

    会重复发送LOGIN消息, 这时需要检查这一客户端是否已经在Session列表中, 第三, 当 客户端发送消息时, 需要找到相应的Session. 为了避免这些查询, 分别使用了如下方法. 首先, 建立一个Hash表, 开始的时候所有空闲...

    经典全面的SQL语句大全

     假如你想选出10条记录(也许是每次页面装载时的10条链接的列表),你可以用BETWEEN 或者数学等式选出第一条记录和适当数量的递增记录。这一操作可以通过好几种方式来完成,但是 SELECT 语句只显示一种可能(这里的...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    实例058 用TreeSet生成不重复自动排序 随机数组 71 实例059 Map映射集合实现省市级联选择框 73 第4章 字符串处理技术 75 4.1 格式化字符串 76 实例060 把数字格式化为货币字符串 76 实例061 格式化当前日期 77 实例...

Global site tag (gtag.js) - Google Analytics