`

删除重复记录,保留重复中的一条!

阅读更多

CREATE TABLE bb1
(
  name character varying,
  value character varying,
  id bigint
)


truncate bb1;

INSERT INTO bb1(name, value, id)VALUES ('a', '11', nextval('public.hibernate_sequence'));
INSERT INTO bb1(name, value, id)VALUES ('a', '12', nextval('public.hibernate_sequence'));
INSERT INTO bb1(name, value, id)VALUES ('a', '13', nextval('public.hibernate_sequence'));
INSERT INTO bb1(name, value, id)VALUES ('c', '22', nextval('public.hibernate_sequence'));
INSERT INTO bb1(name, value, id)VALUES ('c', '21', nextval('public.hibernate_sequence'));
INSERT INTO bb1(name, value, id)VALUES ('d', '31', nextval('public.hibernate_sequence'));
INSERT INTO bb1(name, value, id)VALUES ('e', '32', nextval('public.hibernate_sequence'));


truncate bb1;

INSERT INTO bb1(name, value, id)VALUES ('a', '11', 1);
INSERT INTO bb1(name, value, id)VALUES ('a', '12', 2);
INSERT INTO bb1(name, value, id)VALUES ('a', '13', 3);
INSERT INTO bb1(name, value, id)VALUES ('c', '21', 4);
INSERT INTO bb1(name, value, id)VALUES ('c', '22', 5);
INSERT INTO bb1(name, value, id)VALUES ('d', '31', 6);
INSERT INTO bb1(name, value, id)VALUES ('e', '32', 7);

select * form bb1

查询重复数据 根据单个字段(name)判断

select name,count(*) from bb1 group by name having count(*)>1

删除重复数据,保留重复数据中ID最大的一个, 根据单个字段(name)判断
delete from bb1 where name in (select name,count(*) from bb1 group by name having count(*)>1) and id not in(select max(id) from bb1 group by name having count(*)>1)

 

truncate bb1;

INSERT INTO bb1(name, value, id)VALUES ('a', '11', 1);
INSERT INTO bb1(name, value, id)VALUES ('a', '11', 2);
INSERT INTO bb1(name, value, id)VALUES ('a', '13', 3);
INSERT INTO bb1(name, value, id)VALUES ('c', '21', 4);
INSERT INTO bb1(name, value, id)VALUES ('c', '21', 5);
INSERT INTO bb1(name, value, id)VALUES ('d', '31', 6);
INSERT INTO bb1(name, value, id)VALUES ('e', '32', 7);

select * form bb1

查询重复数据 根据多个字段(name,value)判断

select name,name,count(*) from bb1 group by name,value having count(*)>1

删除重复数据,保留重复数据中ID最大的一个, 根据多个字段(name,value)判断

delete from bb1 a where (a.name,a.value) in (select name,value from bb1 group by name,value having count(*)>1) and a.id not in(select max(id) from bb1 group by name,value having count(*)>1)

分享到:
评论

相关推荐

    删除数据库中重复的数据(只保留一条)

    在数据库管理过程中,经常会遇到需要清理数据的情况,其中一种常见需求就是删除数据库中的重复记录,同时确保每条数据的关键字段只保留一条记录。这种操作在维护数据一致性、提高查询效率等方面具有重要意义。根据...

    Oracle查询重复数据并删除,只保留一条记录.docx

    Oracle 查询重复数据并删除,只保留一条记录 Oracle 是一种关系型数据库管理系统,广泛应用于企业级数据库管理。然而,在实际应用中,数据重复问题经常会出现,例如在资源目录在线编目的资源项子表中存在多条重发...

    删除Access数据库中重复的记录

    在Access中一般只能查找10行大概20条重复记录,这样程序就可以任意指定表及多字段检索重复记录,并把重复的记录移除到一个临时表中,并不是进行真正删除,你可以进行恢复。但是执行第二次查找时则自动删除上次查找的...

    解决Oracle删除重复数据只留一条的方法详解

    查询及删除重复记录的SQL语句1、查找表中多余的重复记录,重复记录是根据单个字段(Id)来判断select * from 表 where Id in (select Id from 表 group by Id having count(Id) > 1)2、删除表中多余的重复记录,...

    删除重复的记录,并保存第一条记录或保存最后一条记录

    在本文中,我们将探讨删除重复记录的方法,并讨论保存第一条记录或保存最后一条记录的策略。 删除重复记录的原因: 在数据库中,重复记录可能会导致数据不准确、系统崩溃、查询结果不正确等问题。重复记录可能来自...

    SQL语句删除数据表中重复的记录

    总之,删除SQL数据表中的重复记录是一项常见的任务,可以通过结合`GROUP BY`、聚合函数(如`MAX`)以及`NOT IN`子句来实现。不过,务必谨慎操作,确保数据安全,并根据实际情况调整和优化查询。

    彻底理解删除重复记录,只保留一条.sql

    彻底理解删除重复记录,只保留一条.sql

    oracle中如何删除重复的记录

    这通常涉及到选择一个合适的条件,例如保留每个组中的第一条记录,然后删除其他重复项。 ```sql DELETE FROM user1 WHERE AGE IN ( SELECT AGE FROM ( SELECT AGE, ROW_NUMBER() OVER (PARTITION BY AGE ORDER...

    Oracle查询重复数据与删除重复记录方法(txt)

    本文将详细介绍几种常用的查询和删除Oracle数据库中重复记录的方法。 #### 一、查询重复数据 1. **使用ROWID** ROWID是Oracle提供的一种特殊数据类型,它表示表中行的物理地址。通过ROWID可以快速定位到表中的某...

    mysql彻底理解删除重复记录sql脚本,只保留一条记录

    mysql彻底理解删除重复记录sql脚本,只保留一条记录

    彻底理解删除重复记录,只保留一条,sql脚本

    彻底理解删除重复记录,只保留一条,sql脚本

    最高效的删除重复记录方法

    要删除表中的重复记录,首先需要确定哪些字段或组合能够唯一标识一条记录。例如,在员工信息表中,`EMP_NO` 字段通常可以作为唯一的标识符。接下来,可以通过比较这些唯一标识符来判断哪些记录是重复的,并选择适当...

    Oracle数据库删除表中重复记录的方法三则.txt

    - 此方法仅删除具有最大ROWID的重复记录,保留其余重复记录中的任意一条。 - 如果需要保留特定的记录(例如最新的记录),则需要根据实际情况调整条件。 - ROWID是一种内部地址,用于快速定位表中的行。但ROWID...

    MySQL 查询重复内容只显示一条

    3. **只显示一条重复内容**:若要保留重复数据中的某一条,可以选择其中的一个特定记录,比如按ID排序后的第一条或者最后一条。以下是一种方法,保留`id`最小的重复记录: ```sql SELECT t1.* FROM ( SELECT ...

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

    这个压缩包文件"Delphi自动删除数据库中重复记录.."提供了一个解决方案,可能是通过 Delphi 代码来实现对数据库中重复记录的自动检测和删除。在本文中,我们将深入探讨 Delphi 与数据库交互的基本原理,以及如何编写...

    删除Access数据库中重复的数据

    5. **删除重复数据**:在确认了要删除的重复记录后,可以使用Access的“删除查询”功能来移除它们。但请注意,删除操作是不可逆的,因此在执行前务必备份数据。 6. **自动化过程**:如果经常需要进行此操作,可以...

    查找删除重复记录

    通过这种方式,可以确保保留每组中的第一条记录,并有效地删除重复记录。 总之,通过SQL查询可以高效地识别、查找并删除数据库中的重复记录,从而保持数据的完整性和准确性。根据具体情况选择合适的方法,可以更好...

    oracle删除重复记录

    本文将详细介绍如何在Oracle数据库中有效地删除表内的重复记录。 ### 一、理解重复记录 在数据库中,重复记录是指具有相同字段值的一组记录。例如,在一个员工表中,如果有多个记录拥有相同的姓名、职位等信息,则...

    sqlServer删除重复数据

    SQL Server 删除重复数据 SQL Server 删除重复数据是数据库管理中的一项重要任务。...这些方法可以删除重复记录,只保留一条记录。 删除重复数据需要根据实际情况选择合适的方法,才能正确地删除重复记录。

Global site tag (gtag.js) - Google Analytics