`
felixsky
  • 浏览: 7482 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类

通过SQL保留数据库表中的唯一一行重复数据

 
阅读更多

在项目开发和维护过程中,经常会遇到数据库中存在重复数据,由此带来一系列的问题。于是“如何删除重复数据,并保留重复数据的一条记录”这样的需求就会经常在工作中遇到。而每次遇到这样的问题总是要重新整理sql,今天再次遇到这样的问题,决定还是记录下来,方便以后查阅。

 

目前工作的数据库是SQL Server 2008, 所以该方案只针对SQL Server有效。

大致思路: 通过Rank函数对可能存在重复值的columns进行分块Ranking (如下表)。随后对rank值大于1的记录进行删除。

ProductID   Name                   LocationID   Quantity Rank
----------- ---------------------- ------------ -------- ----
494         Paint - Silver         3            49       1
495         Paint - Blue           3            49       1
493         Paint - Red            3            41       3
496         Paint - Yellow         3            30       4
492         Paint - Black          3            17       5
495         Paint - Blue           4            35       1
496         Paint - Yellow         4            25       2
493         Paint - Red            4            24       3
492         Paint - Black          4            14       4
494         Paint - Silver         4            12       5

大致的SQL 如下:

 

alter table tableName add  sno int identity(1,1)
delete from tableName where sno in
(
	select sno from (
		select *,
		RANK() OVER ( PARTITION BY empid,name ORDER BY sno DESC )rank
		From tableName
	)T
	where rank>1
)
ALTER TABLE tableName DROP COLUMN sno

 当然还有其他方法,诸如通过临时表之类的,下次用到再补充。

 

针对Oracle,可以通过rowid来实现相同的功能,示例如下:

DELETEFROM table WHERE rowid notin(SELECT MIN(rowid)FROM table GROUPBY column1, column2, column3);

分享到:
评论

相关推荐

    删除表中重复数据sql语句

    ### 删除表中重复数据SQL语句详解 #### 一、基础知识概述 在数据库管理中,重复数据是一个常见的问题,尤其当数据库经历长时间的数据输入时,可能会出现数据录入错误或者批量导入过程中导致的数据冗余。重复数据的...

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

    在使用Microsoft Access构建数据库时,有时可能会出现重复的数据,这可能会导致数据不一致性和效率...在使用过程中,理解数据模型、熟悉SQL查询以及掌握Access的高级功能,将使你更加熟练地管理数据库中的重复数据。

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

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

    sql+如何去重复数据,数据库去重复数据

    在数据库管理过程中,去除重复数据是一项非常重要的任务。这不仅有助于提高数据质量,还能优化查询性能,确保数据的一致性和准确性。SQL作为一种广泛使用的数据库语言,提供了多种方法来处理重复数据问题。根据提供...

    sqlserver数据库从备份文件中恢复表数据

    在SQL Server中,数据库的备份和恢复是数据库管理员日常工作中至关重要的部分,特别是在面临数据丢失或系统崩溃的情况下。本文将详细讲解如何从SQL Server备份文件中恢复特定的表数据。 一、备份类型与策略 在SQL ...

    清除SQL数据库里的重复记录

    总结来说,清除SQL数据库中的重复记录是数据治理的关键部分,可以通过检测和删除步骤实现。同时,通过合理的设计和约束,可以预防重复记录的产生。在进行这些操作时,务必确保数据的安全,并定期检查和维护数据库的...

    MySQL根据某一个或者多个字段查找重复数据的sql语句

    sql 查出一张表中重复的所有记录数据 1.表中有id和name 两个字段,查询出name重复的所有数据 select * from xi a where (a.username) in (select username from xi group by username having count(*) > 1) 2、...

    OracleSQL实例-删除重复数据行留最新日期实例.pdf

    在Oracle SQL中,删除重复数据并保留最新日期的实例是一个常见的数据清理任务,尤其是在具有历史记录或事务数据的数据库中。这个实例展示了如何通过SQL查询有效地处理这种情况。在这个例子中,我们有一个名为`abc`的...

    SQL SERVER数据库试题

    5. 数据模型:关系模型的特征是以二维表格结构来保存数据,在关系表中不允许有重复行存在。关系模型数据库可以体现一对一、一对多、多对多的关系。 6. 数据库管理:数据库减少了数据冗余,数据库中的数据可以共享,...

    SQL 资料 SQL中常用的数据类型 SQL中创建数据库的语法,创建表的语法

    根据提供的文件信息,我们可以归纳出一系列...以上总结了SQL中常见的操作,包括数据库的创建与删除、表的管理、数据操纵以及复杂的查询操作等。这些知识点对于初学者来说非常重要,也是日常工作中不可或缺的一部分。

    sql 查询重复数据

    在数据库中,查询和处理重复数据是一项常见的任务。本文将详细介绍查询和处理重复数据的方法,包括查找所有重复记录、查找重复记录、删除重复记录等。 查找所有重复记录 使用以下 SQL 语句可以查找所有重复记录: ...

    Oracle删除表中的重复数据

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

    SQL删除表里的重复数据的两种方法

    本文将详细介绍SQL中删除表内重复数据的两种方法,并对每种方法进行深入解析。 #### 方法一:使用子查询删除重复记录 这种方法主要是通过子查询来找到重复记录并删除它们。具体步骤如下: 1. **确定重复字段**:...

    sqlServer删除重复数据

    SQL Server 删除重复数据是数据库管理中的一项重要任务。重复数据可能是完全重复的记录,也可能是部分关键字段重复的记录。删除重复数据可以使用多种方法,包括使用 SELECT DISTINCT 语句、使用自动生成的标识符、...

    sql删除表中重复记录方法

    标题与描述概述的知识点是关于如何使用SQL语句来删除数据库表中的重复记录,这是一个在数据清理和维护数据完整性时非常实用的技术。以下是对给定文件中四种方法的详细解析和扩展,旨在帮助读者深入理解并掌握这些...

    基于重复数据删除技术的SQL Server数据库备份系统.pdf

    在数据库备份场景中,尤其是在大型系统中,经常存在大量的重复数据,如日志文件中的重复事务、用户表中的重复记录等。重复数据删除能够显著降低备份文件的大小,从而节省存储成本,同时加快备份和恢复的速度。 SQL ...

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

    在Oracle数据库管理中,经常会遇到需要处理表中的重复数据的情况。重复数据不仅会占用不必要的存储空间,还可能导致数据统计错误或业务逻辑混乱等问题。因此,掌握如何有效地删除Oracle数据库表中的重复记录是一项...

    修复sql数据库里面的表一致性错误

    表一致性错误指的是数据库表中的数据不满足预设的一致性规则,这可能包括主键冲突、外键引用无效、索引损坏、重复数据或其他违反数据库完整性约束的情况。这些错误可能表现为数据读取异常、事务提交失败、查询结果不...

    SQL Server删除重复数据的几个方法

    在数据库管理过程中,经常会遇到需要清理重复数据的情况。重复数据不仅浪费存储空间,还可能导致数据分析结果出现偏差。对于SQL Server而言,有多种方法可以用来删除重复的数据,以下将详细介绍几种实用的方法。 ##...

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

    在数据库管理中,有时我们需要确保数据表中的记录是唯一的,避免重复数据导致的不一致性和冗余。在SQL中,可以使用特定的查询语句来删除重复的记录,以保持数据的整洁和准确。以下是如何使用SQL语句来删除数据表中...

Global site tag (gtag.js) - Google Analytics