`
lizhiyu211
  • 浏览: 232672 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

sqlserver 重复数据只留一条

 
阅读更多

sqlserver中多字段重复只保留一条的方法

表student_score中除主键之外 所有字段值都相同的则删除掉,只保留一条:

 

CREATE TABLE [dbo].[student_score](
 [score_id] [numeric](11, 0) IDENTITY(1,1) NOT NULL primary key,
 [student_id] [varchar](16) NULL,
 [score_year] [int] NULL,
 [score_term] [int] NULL,
 [score_edusys] [int] NULL,
 [score_item] [int] NULL,
 [item_child] [int] NULL,
 [score_module] [varchar](2000) NULL,
 [score_value] [varchar](32) NULL)

 

-- 所有存在重复的都放在临时表中
select * into temp_student_score from student_score a where exists(
select 1 from student_score b where a.student_id = b.student_id and a.score_year= b.score_year
and a.score_term = b.score_term and a.score_edusys = b.score_edusys and a.score_item = b.score_item
and isnull(a.item_child,-1) = isnull(b.item_child,-1) and isnull(a.score_module,-1) = isnull(b.score_module,-1)
and isnull(a.score_value,-1) = isnull(b.score_value,-1)
and a.score_id <> b.score_id
)

-- 重复数据中ID最小的一条数据存在临时表中
select min(score_id) score_id into temp_min_score_id
 from temp_student_score
 group by student_id,score_year,score_term,score_edusys,score_item,item_child,score_module,score_value

 

-- 通过临时表删除数据


delete   a from student_score  a where exists(
select 1 from temp_student_score b where a.score_id = b.score_id
)
and not exists(
select 1 from temp_min_score_id c where a.score_id = c.score_id
)

drop table temp_student_score
go

drop table temp_min_score_id
go

分享到:
评论

相关推荐

    sqlServer删除重复数据

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

    sqlserver中重复数据值只取一条的sql语句

    在SQL Server中,处理重复数据是一项常见的任务,特别是在数据分析、数据清洗或报表生成时。当数据库表中的某些列有重复的值时,我们可能需要仅选取其中的一条记录,例如,选择每组重复数据的第一条或者最后一条。...

    轻松消除SQL SERVER重复记录

    标题提到的"轻松消除SQL SERVER重复记录"是指在SQL Server环境中高效、便捷地去除数据库表中的重复行。描述中提到的问题是开发人员在查询和统计时可能遇到的挑战,即由于重复记录导致的结果不准确。下面我们将详细...

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

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

    sqlserver清除完全重复的数据只保留重复数据中的第一条

    在SQL Server中,有时我们需要处理重复数据,确保数据库中只保留每组重复数据的一个实例,通常是最早或最新的记录。在给定的标题和描述中,我们看到一个具体的方法来实现这个目标,即通过创建临时表并利用`identity`...

    sql 查询重复数据

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

    sqlserver海量数据TOP分页

    在SQL Server数据库中,处理海量数据的查询是一个常见的挑战,特别是在需要进行分页显示的时候。传统的分页方式可能会导致性能瓶颈,特别是在数据量极大的情况下。本文将深入探讨如何使用SQL Server中的`TOP`语句来...

    SQL Server 2000完结篇系列之三:数据并发-彻底掌握SQL Server 2000事务机制

    在SQL Server 2000中,事务管理是数据库系统中至关重要的部分,因为它涉及到数据的一致性、完整性和并发控制。本篇将深入探讨SQL Server 2000的事务机制,帮助你全面理解并掌握如何在多用户环境下有效地处理数据并发...

    SQLServer中防止并发插入重复数据的方法详解

    总之,防止SQL Server中的并发插入重复数据可以通过多种方式实现,包括数据库级别的约束、条件查询以及事务隔离级别和锁的巧妙使用。在设计数据库时,应根据具体业务需求和预期的并发负载来选择最合适的策略。

    战胜SQL Server必做练习50题

    SQL Server是微软公司推出的一款关系型数据库管理系统,广泛应用于企业数据存储、数据分析和业务处理等领域。为了提升在SQL Server中的技能,掌握好SQL语言至关重要。本文将针对"战胜SQL Server必做练习50题"这一...

    SQL Server2005基本方法和语句

    在数据库管理与开发领域,SQL Server 2005 是一个重要的工具,它提供了丰富的功能来满足数据存储、管理和查询的需求。本文将深入解析 SQL Server 2005 的基本方法与常用语句,包括数据库的创建与删除、表的创建与...

    查询重复语句,每种直查询一条出来

    根据提供的文件信息,我们可以深入探讨如何在SQL Server中查询重复语句,并且每种只查询一条数据的方法。这种需求在数据库管理和开发过程中非常常见,尤其是在需要处理大量数据、确保数据准确性与完整性的场景下。 ...

    SQL Server中存储过程比直接运行SQL语句慢的原因

    在了解这个问题之前,我们通常认为存储过程具有以下优点:首先,存储过程只在创造时进行编译即可,以后每次执行存储过程都不需再重新编译,而我们通常使用的 SQL 语句每执行一次就编译一次,所以使用存储过程可以...

    SQL server高并发下生成唯一订单号的存储过程

    原理:按照一定规则生成订单号后,把订单号插入数据表后,再返回给用户,由于数据表设置了主键,也就是当数据表中存在一条一样的订单号时,是无法插入到数据表中,所以即使高并发情况下,也不会出现重复订单号

    C# 用SQL自动记录数据并且查询出某一列有哪些重复数据

    本主题聚焦于如何在C#中利用SQL来自动记录数据,并查询出某一列中的重复数据。以下将详细讲解这一过程,以及相关知识点。 首先,我们需要理解C#和SQL的基础。C#是一种面向对象的编程语言,广泛应用于开发Windows...

    SQLServer选择题答案.pdf

    1.INSERT INTO语句中的 INTO关键字不能省略,INSERT INTO语句可以一次添加多条数据,INSERT INTO语句中的字段名可以省略,INSERT INTO语句中的 VALUES关键字不能省略。 2.INSERT INTO语句中,字符串类型的数据需要...

    SQL Server数据库删除数据集中重复数据实例讲解

    然后,我们可以通过删除行号大于1的记录来保留每个组的第一条记录,从而达到删除重复数据的目的: ```sql DELETE A FROM ( SELECT rown = ROW_NUMBER() OVER(PARTITION BY companyName, invoiceNumber, ...

Global site tag (gtag.js) - Google Analytics