`

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

 
阅读更多

删除重复数据保留name中id最小的记录

delete from order_info where id not in (select id from (select min(id) as id from order_info group by order_number) as b);

 

delete from table where id not in (select min(id) from table group by name having count(name)>1) and  id in (select id group by name having count(name)>1)

(注意:HAVING 子句对 GROUP BY 子句设置条件的方式与 WHERE 和 SELECT 的交互方式类似。WHERE 搜索条件在进行分组操作之前应用;而 HAVING 搜索条件在进行分组操作之后应用。HAVING 语法与 WHERE 语法类似,但 HAVING 可以包含聚合函数。HAVING 子句可以引用选择列表中显示的任意项。)

 

扩展:

 

SQL:删除重复数据,只保留一条用SQL语句,删除掉重复项只保留一条在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢

 

 1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断

select * from people where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1)

2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录 delete from people where   peopleName in (select peopleName    from people group by peopleName      having count(peopleName) > 1) and   peopleId not in (select min(peopleId) from people group by peopleName     having count(peopleName)>1)

3、查找表中多余的重复记录(多个字段)

select * from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)

4、删除表中多余的重复记录(多个字段),只留有rowid最小的记录

delete from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1) and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)

5、查找表中多余的重复记录(多个字段),不包含rowid最小的记录

select * from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1) and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1) 

6.消除一个字段的左边的第一位:

update tableName set [Title]=Right([Title],(len([Title])-1)) where Title like '村%'

7.消除一个字段的右边的第一位:

update tableName set [Title]=left([Title],(len([Title])-1)) where Title like '%村'

8.假删除表中多余的重复记录(多个字段),不包含rowid最小的记录

update vitae set ispass=-1 where peopleId in (select peopleId from vitae group by peopleId,seq having count(*) > 1) and seq in (select seq from vitae group by peopleId,seq having count(*) > 1) and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1) 

 

http://www.cnblogs.com/huangw/archive/2012/06/04/2534676.html

 

分享到:
评论

相关推荐

    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是一种常见的数据库维护任务,但需要注意正确性和性能。在执行此类操作时,应充分测试,并考虑并发情况和可能的性能影响。

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

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

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

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

    Delphi自动删除数据库中重复记录..rar

    // 如果主键值相同,表示重复,删除前一条记录 if CurrentRecord = LastRecord then ADataset.Prior.Delete; end; // 移动到下一条记录 ADataset.Next; end; end; ``` 这个示例中的 `RemoveDuplicates` ...

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

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

    通过存储过程删除Mysql数据库表中的重复记录.pdf

    在给定的存储过程`DelDuplicateRecord`中,它旨在删除具有相同标题的记录,但仅保留每个标题下最早的一条记录。这个过程适用于那些有重复数据并且希望保持数据唯一性的表。 首先,我们来详细分析存储过程的结构和...

    MySQL 去除重复数据实例详解

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

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

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

    mysql 数据表中查找重复记录

    在MySQL数据库管理中,有时我们需要找出数据表中的重复记录,以确保数据的准确性和一致性。在给定的标题和描述中,我们关注的核心知识点是...以上提供的方法和技巧可以帮助你更有效地查找、分析和解决重复数据的问题。

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

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

    MySQL 查询某个字段不重复的所有记录

    这种方法的优点是可以根据需求选择保留每组中的哪一条记录。然而,如果你的表非常大,这种方法可能会效率较低,因为`JOIN`操作通常比简单的`SELECT DISTINCT`更耗费资源。在性能至关重要的情况下,可以考虑其他优化...

    mysql删除重复行的实现方法

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

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

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

Global site tag (gtag.js) - Google Analytics