`

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 查询重复内容只显示一条

    4. **删除重复数据**:如果你希望彻底删除重复数据,只保留一条,可以使用`DISTINCT`关键字创建一个新的表,或者使用`DELETE`语句结合子查询。但请注意,删除操作应谨慎进行,以免丢失重要信息。例如: ```sql ...

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

    本文将详细介绍如何在MySQL中查找并删除重复数据,同时只保留其中一条,具体以实例进行解析。 首先,假设我们有一个名为`test`的表格,包含以下字段:`school_id`、`school_name`、`total_student`和`test_takers`...

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

    本文主要探讨如何查询并删除MySQL中的重复数据,同时保留每个重复组中ID最小的一条记录。 首先,我们需要找到表中的重复数据。假设我们有一个名为`brand`的表,其中包含品牌名称`brandName`和其他字段,而我们想要...

    Mysql删除重复数据保留最小的id 的解决方法

    在MySQL数据库管理中,有时我们需要清理表中的重复数据,但...总之,删除重复数据并保留最小ID是一种常见的数据库维护任务,但需要注意正确性和性能。在执行此类操作时,应充分测试,并考虑并发情况和可能的性能影响。

    MySQL中删除重复数据的简单方法

    在MySQL数据库管理中,删除重复数据是一个常见的需求,特别是在数据清洗和数据分析时。传统的删除重复数据的方法,如使用`NOT IN`或`DISTINCT`,可能会导致效率低下,特别是当处理大量数据时。本文将介绍一种高效的...

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

    游标允许逐行处理数据,适合于复杂的数据操作,例如在删除重复记录时,保留特定条件下的第一条记录。然而,这种方法通常效率较低,不推荐在大数据量的情况下使用。 总之,处理数据库中的重复记录是一个常见的任务,...

    MySQL 去除重复数据实例详解

    总结来说,MySQL和其他数据库系统提供了多种方法来处理和去除重复数据。对于完全重复的记录,`DISTINCT`关键字是首选;而对于部分字段重复的情况,可以通过相关子查询、自连接或窗口函数来解决。在实际应用中,应...

    MySQL 处理重复数据的方法(防止、删除)

    这里假设`id`是自增的主键,`p1`和`p2`代表表的别名,这条语句会保留每组重复记录中`id`最大的一条。 总结起来,处理MySQL中的重复数据涉及多个层面,包括在设计阶段通过设置主键和唯一索引来预防,使用`INSERT ...

    mysql查找删除表中重复数据方法总结

    接下来,如果决定删除这些重复数据,我们需要选择保留哪一条。通常,我们可能希望保留最新的一条(即拥有最大ID的记录)。这里,假设`id`是主键字段,表示每行的唯一标识: ```sql SELECT id, column1, column2, ...

    mysql删除重复行的实现方法

    这样可以确保每组重复行中只保留一条记录,而不会破坏数据的完整性。 执行完这个删除操作后,`relation`表应该只剩下了不重复的行。在本例中,结果应为: ``` id userId fanId 1 1 1 4 2 2 6 3 3 ``` 总结来说,...

    谈MySQL中重复行的查找删除.pdf

    在确认了哪些行是重复的之后,下一步是删除重复行,但保留其中的一条。通常,选择保留的标准可能因需求而异,可能是最早的记录(根据主键的最小值),也可能是其他具有特定字段最大值的记录。在这个例子中,我们假设...

    数据库删除完全重复和部分关键字段重复的记录

    对于部分关键字段重复的情况,通常我们需要保留重复记录中的第一条。这里以Name和Address为例,我们希望基于这两个字段得到唯一的结果集。以下是处理方法: 1. **MySQL** - 在`tableName`上新增一个自增的`autoID`...

    Mysql删除重复的数据 Mysql数据去重复

    进一步,如果想要找到可以安全删除的重复记录,即保留每个分组中的一条记录,我们可以使用子查询来确定哪些记录是多余的。以下是一个示例: ```sql SELECT t1.* FROM employee t1 WHERE (t1.emp_name) IN ( ...

    shell脚本操作mysql数据库删除重复的数据

    找到重复的`user_id`后,脚本使用`LIMIT 1`来删除一条记录,这表明它只删除每组中的一个重复项,而不是全部。这个策略可能适用于开发测试环境,但在生产环境中,可能需要更谨慎的处理方式,例如保留最早的或最新的...

    MySQL 消除重复行的一些方法

    例如,创建一个名为`test_1`的表,插入重复数据,然后创建一个临时表`tmp`,将`test_1`中的不重复数据插入`tmp`,最后删除`test_1`并重命名`tmp`为`test_1`。这样,`test_1`中就只剩下不重复的行了。 2. **添加自增...

Global site tag (gtag.js) - Google Analytics