`

删除表中的重复记录

阅读更多
因为重复的数据会是有两条的或两条以上,不知道你是想保留一条还是想都删除掉。

CREATE TABLE test (
	a VARCHAR(10) NULL,
	b VARCHAR(10) NULL,
	c VARCHAR(10) NULL
)
插入数据
a       b       c
--------------------
1	a	1
1	a	2
2	b	1
3	c	1
3	c	2
先找出重复记录:
SELECT a,b FROM test t 
GROUP BY a,b
HAVING COUNT(*)>1

如果想把重复的都删除:

DELETE test 
FROM test
JOIN 
(
SELECT a,b FROM test t 
GROUP BY a,b
HAVING COUNT(*)>1	
)t2 ON test.a=t2.a AND test.b=t2.b 

如果想保留一条还要根据其它的列来判断,比如例子中的C列,下面实现A,B两列都相同时保留C最小的一条:

DELETE test 
FROM test
JOIN 
(
SELECT a,b,min(c)c  FROM test t 
GROUP BY a,b
HAVING COUNT(*)>1	
)t2 ON test.a=t2.a AND test.b=t2.b AND test.c= t2.c

分享到:
评论

相关推荐

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

    这种方法适用于仅需删除重复记录中的部分行,而保留至少一行的情况。通过比较不同记录的ROWID来确定哪些记录是重复的,并利用子查询找出这些重复记录的最大ROWID,然后将其删除。 **SQL示例代码:** ```sql DELETE...

    删除表中重复记录

    当表中的某个字段(id)是唯一主键时,可以使用以下语句删除重复记录: ```sql DELETE FROM table WHERE id NOT IN ( SELECT MAX(id) FROM table GROUP BY col1, col2, ...,coln ) ``` 其中`col1, col2, ..., ...

    sql删除表中重复记录方法

    这种方法通过创建两个临时表来辅助删除重复记录的过程。首先,通过`GROUP BY`和`COUNT(*)`函数找出重复的记录,并将这些记录的ID存储到临时表`temp1`中。接着,将不重复的记录也插入到`temp1`中。之后,创建一个新的...

    删除数据表中重复记录

    删除重复记录的核心思想是先识别出哪些记录是重复的,然后通过某种方式将这些重复记录从数据表中移除。通常的做法包括: 1. **识别重复记录**:通过`GROUP BY`和`HAVING`子句找出具有相同字段值的记录。 2. **标记...

    删除表中重复数据sql语句

    2. **删除表中多余的重复记录** - **删除单字段重复记录(保留最小ROWID)** ```sql DELETE FROM people WHERE peopleId IN ( SELECT peopleId FROM people GROUP BY peopleId HAVING COUNT(peopleId) > 1 ...

    怎样删除数据库中重复记录

    这就是使用临时表来删除重复记录。我们可以创建一个临时表,具有相同的结构,然后将数据从原表中拷贝到临时表中。最后,我们可以删除原表中的数据,并将临时表中的数据导入原表中。 结论 删除数据库中重复记录是...

    Oracle删除表中的重复数据

    重复数据的存在不仅会占用额外的存储空间,还可能导致数据统计错误、数据分析偏差等问题,因此,有效地删除表中的重复数据是保持数据质量和提高数据库性能的重要环节。本文将详细解析如何在Oracle中删除表中的重复...

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

    以下是如何使用SQL语句来删除数据表中重复记录的详细步骤。 首先,我们来看一个简单的例子,假设我们有一个名为`Repeat`的数据表,其中存在重复的记录。要删除这些重复的记录,但保留每个唯一组合的最新(最大`id`...

    如何删除表中重复数据

    这种方法不需要创建临时表,而是直接通过子查询的方式删除重复记录。 1. **确定唯一标识字段**: 首先需要确定哪些字段组合起来可以作为一条记录的唯一标识,比如主键或一组具有唯一性的字段。 2. **删除重复记录...

    plsql删除重复记录

    在开始删除重复记录之前,首先需要确定哪些记录是重复的。以下SQL语句可以用来查询`test`表中所有字段都重复的记录: ```sql SELECT * FROM test GROUP BY name, age, sex, id, sf HAVING COUNT(*) > 1; ``` 这里...

    oracle中如何删除重复的记录

    这种方法适用于只需要删除重复记录中的某些行的情况。步骤如下: 1. **找出重复的记录**:首先,我们需要找到那些重复的记录。可以通过子查询来实现这一点。 ```sql SELECT age FROM ( SELECT age, COUNT(*) as...

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

    以下是一个简单的示例代码片段,展示了如何在 Delphi 中删除重复记录: ```delphi uses ADODB; procedure RemoveDuplicates(ADataset: TDataSet); var CurrentRecord, LastRecord: Variant; begin // 先移动到...

    VB删除Access数据库中重复记录(已测试,编译通过)

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

    SQL语句删除重复记录

    在数据库管理中,删除重复记录是一个非常重要的操作。重复记录可能来自于数据导入、系统错误或者其他原因。今天,我们将探讨如何使用 SQL 语句删除重复记录。下面将介绍四种不同的方法来删除重复记录。 Knowledge ...

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

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

    删除数据库中的重复记录

    本篇文章将深入探讨如何在SQL数据库,如Microsoft Access(.accdb)中查找并删除重复记录。 一、查找重复记录 1. SQL查询:使用`GROUP BY`和`HAVING`子句可以找出重复的数据。例如,假设我们有一个`Employees`表,...

    Oracle中用Rowid查找和删除表中的重复记录

    上述命令会在删除重复记录的同时,将异常记录存储到`exceptions`表中,便于后续分析和处理。 通过上述方法,我们可以有效地在Oracle数据库中查找和删除重复记录。选择哪种方法取决于具体的业务场景和技术需求。...

    查询和删除表中重复数据

    SQL Server 中删除具有相同 `servid` 的重复记录 **示例**: ```sql DELETE FROM t_serviceitem WHERE servid IN (SELECT servid FROM t_serviceitem GROUP BY servid HAVING COUNT(servid) > 1) AND gid NOT IN ...

Global site tag (gtag.js) - Google Analytics