`

MySQL删除重复数据行,只保留一条

 
阅读更多

 

 

delimiter $$

CREATE TABLE `devices_all` (
  `device_all_id` int(11) NOT NULL AUTO_INCREMENT,
  `device_id` varchar(512) DEFAULT NULL,
  `device_token` varchar(512) DEFAULT NULL,
  `client_agent` varchar(512) DEFAULT NULL,
  `create_time` datetime DEFAULT NULL,
  PRIMARY KEY (`device_all_id`)
) ENGINE=MyISAM AUTO_INCREMENT=49 DEFAULT CHARSET=latin1$$

 

表名devices_all,判重列device_id。 

 

delete from devices_all
where device_id in (select  device_id from  (select device_id from  devices_all  a  group by a.device_id having count(a.device_id) > 1) as a) 
and device_all_id not in (select device_all_id from (select min( device_all_id) device_all_id from devices_all group by  device_id having count( device_id)>1) as b)  

 

分享到:
评论
2 楼 sushi1025 2016-03-18  
  
1 楼 793059909 2014-04-07  
看不懂,能否简单解释下。
更常见的做法是把需要保留的数据放一张临时表中,然后删除原表,然后把临时表中的数据再导入生产表














相关推荐

    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删除重复行的实现方法

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

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

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

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

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

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

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

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

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

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

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

    MySQL 消除重复行的一些方法

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

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

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

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

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

    Mysql一些复杂的sql语句(查询与删除重复的行)

    接下来,我们要**删除重复的行并保留一条**。这里需要注意MySQL的`DELETE`语句在特定情况下的限制,即当`DELETE`的`WHERE`子句中包含`IN`操作符,并且`IN`中的子查询也引用了正在删除的表时,会引发问题,导致无法...

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

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

Global site tag (gtag.js) - Google Analytics