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
分享到:
相关推荐
SQL Server 删除重复数据 SQL Server 删除重复数据是数据库管理中的一项重要任务。重复数据可能是完全重复的记录,也可能是部分关键字段重复的记录。删除重复数据可以使用多种方法,包括使用 SELECT DISTINCT 语句...
在SQL Server中,处理重复数据是一项常见的任务,特别是在数据分析、数据清洗或报表生成时。当数据库表中的某些列有重复的值时,我们可能需要仅选取其中的一条记录,例如,选择每组重复数据的第一条或者最后一条。...
标题提到的"轻松消除SQL SERVER重复记录"是指在SQL Server环境中高效、便捷地去除数据库表中的重复行。描述中提到的问题是开发人员在查询和统计时可能遇到的挑战,即由于重复记录导致的结果不准确。下面我们将详细...
### SQL Server删除重复数据的方法 在数据库管理过程中,经常会遇到需要清理重复数据的情况。重复数据不仅浪费存储空间,还可能导致数据分析结果出现偏差。对于SQL Server而言,有多种方法可以用来删除重复的数据,...
在SQL Server中,有时我们需要处理重复数据,确保数据库中只保留每组重复数据的一个实例,通常是最早或最新的记录。在给定的标题和描述中,我们看到一个具体的方法来实现这个目标,即通过创建临时表并利用`identity`...
SQL 查询重复数据 在数据库中,查询和处理重复数据是一项常见的任务。本文将详细介绍查询和处理重复数据的方法,包括查找所有重复记录、查找重复记录、删除重复记录等。 查找所有重复记录 使用以下 SQL 语句可以...
在SQL Server数据库中,处理海量数据的查询是一个常见的挑战,特别是在需要进行分页显示的时候。传统的分页方式可能会导致性能瓶颈,特别是在数据量极大的情况下。本文将深入探讨如何使用SQL Server中的`TOP`语句来...
在SQL Server 2000中,事务管理是数据库系统中至关重要的部分,因为它涉及到数据的一致性、完整性和并发控制。本篇将深入探讨SQL Server 2000的事务机制,帮助你全面理解并掌握如何在多用户环境下有效地处理数据并发...
总之,防止SQL Server中的并发插入重复数据可以通过多种方式实现,包括数据库级别的约束、条件查询以及事务隔离级别和锁的巧妙使用。在设计数据库时,应根据具体业务需求和预期的并发负载来选择最合适的策略。
SQL Server是微软公司推出的一款关系型数据库管理系统,广泛应用于企业数据存储、数据分析和业务处理等领域。为了提升在SQL Server中的技能,掌握好SQL语言至关重要。本文将针对"战胜SQL Server必做练习50题"这一...
在数据库管理与开发领域,SQL Server 2005 是一个重要的工具,它提供了丰富的功能来满足数据存储、管理和查询的需求。本文将深入解析 SQL Server 2005 的基本方法与常用语句,包括数据库的创建与删除、表的创建与...
根据提供的文件信息,我们可以深入探讨如何在SQL Server中查询重复语句,并且每种只查询一条数据的方法。这种需求在数据库管理和开发过程中非常常见,尤其是在需要处理大量数据、确保数据准确性与完整性的场景下。 ...
在了解这个问题之前,我们通常认为存储过程具有以下优点:首先,存储过程只在创造时进行编译即可,以后每次执行存储过程都不需再重新编译,而我们通常使用的 SQL 语句每执行一次就编译一次,所以使用存储过程可以...
原理:按照一定规则生成订单号后,把订单号插入数据表后,再返回给用户,由于数据表设置了主键,也就是当数据表中存在一条一样的订单号时,是无法插入到数据表中,所以即使高并发情况下,也不会出现重复订单号
本主题聚焦于如何在C#中利用SQL来自动记录数据,并查询出某一列中的重复数据。以下将详细讲解这一过程,以及相关知识点。 首先,我们需要理解C#和SQL的基础。C#是一种面向对象的编程语言,广泛应用于开发Windows...
1.INSERT INTO语句中的 INTO关键字不能省略,INSERT INTO语句可以一次添加多条数据,INSERT INTO语句中的字段名可以省略,INSERT INTO语句中的 VALUES关键字不能省略。 2.INSERT INTO语句中,字符串类型的数据需要...
然后,我们可以通过删除行号大于1的记录来保留每个组的第一条记录,从而达到删除重复数据的目的: ```sql DELETE A FROM ( SELECT rown = ROW_NUMBER() OVER(PARTITION BY companyName, invoiceNumber, ...