广告
返回顶部
首页 > 资讯 > 数据库 >SQLServe中怎么删除重复行
  • 709
分享到

SQLServe中怎么删除重复行

2024-04-02 19:04:59 709人浏览 独家记忆
摘要

sqlServe中怎么删除重复行,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Microsoft SQL Server 表不应该包含重复行

sqlServe中怎么删除重复行,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

Microsoft SQL Server 表不应该包含重复行和非唯一主键。为简洁起见,在本文中我们有时称主键为“键”或“PK”,但这始终表示“主键”。重复的 PK 违反了实体完整性,在关系系统中是不允许的。SQL Server 有各种强制执行实体完整性的机制,包括索引、唯一约束、主键约束和触发器。 尽管如此,在某些情况下还可能会出现重复的主键;如果出现此类情况,就必须清除重复主键。出现重复主键的情形之一是,在 SQL Server 外部的非关系数据中存在重复的 PK,在导入这些数据时没有强制执行 PK 唯一性。出现重复主键的另一种情形来自数据库设计错误,如没有对每张表强制执行实体完整性。   通常在尝试创建唯一索引时会发现重复的 PK,因为如果找到重复的键,唯一索引的创建即会中止,并且将显示以下消息:   Msg 1505, Level 16, State 1 Create unique index aborted on duplicate key.   如果使用的是 SQL Server 2000 或 SQL Server 2005,则会收到以下错误消息:   Msg 1505, Level 16, State 1 CREATE UNIQUE INDEX terminated because a duplicate key was found for object name '%.*ls' and index name '%.*ls'.The duplicate key value is %ls.   本文讨论如何查找和删除表中重复的主键。但是,您应该仔细检查出现重复键的进程以避免重复出现。   更多信息   在该示例中,我们将使用下表,它具有重复的 PK 值。在该表中,主键是两列(col1、col2)。我们无法创建唯一索引或主键约束,因为这两行具有重复的 PK。该过程演示如何识别和删除重复的主键。复制代码 代码如下:   create table t1(col1 int, col2 int, col3 char(50))   insert into t1 values (1, 1, 'data value one')   insert into t1 values (1, 1, 'data value one')   insert into t1 values (1, 2, 'data value two')

  第一步是识别哪些行具有重复的主键值:复制代码 代码如下:   SELECT col1, col2, count(*)   FROM t1   GROUP BY col1, col2   HAVING count(*) > 1

  这将为表中的每组重复的 PK 值返回一行。此结果中的最后一列是特定 PK 值的重复数。   col1 col2   1 1 2   如果只有几组重复的 PK 值,则最佳方法是手动逐个删除它们。例如:复制代码 代码如下:   set rowcount 1   delete from t1   where col1=1 and col2=1

  rowcount 值应该是给定键值的重复数减去 1。在该示例中,有 2 个重复的主键,所以 rowcount 被设置为 1。col1/col2 值来自上面的 GROUP BY 查询结果。如果 GROUP BY 查询返回多行,则“set rowcount”查询将必须为这些行中的每一行各运行一次。每次运行该查询时,将 rowcount 设置为特定 PK 值的重复数减去 1。   在删除行之前,您应该验证是否整行重复。虽然整行重复不太可能发生,但可能 PK 值重复,而整行不重复。例如一个将身份证号码作为主键的表,该表有两个具有相同号码的不同的人(即行),但每个人有唯一的属性。在这种情况下,任何引起重复键的问题可能还引起在行中放入有效的唯一的数据。在删除该数据之前,应该将该数据复制出来并保存下来以进行研究和适当的调整。  如果表中有多组完全不同的重复的 PK 值,则逐个删除它们会很费时间。在这种情况下,可使用下面的方法: 1.首先,运行上面的 GROUP BY 查询来确定有多少组重复的 PK 值及每组的重复数。   2.选择重复的键值放入临时表中。例如:复制代码 代码如下:   SELECT col1, col2, col3=count(*)   INTO holdkey   FROM t1   GROUP BY col1, col2   HAVING count(*) > 1

  3.选择重复的行放入临时表中,以清除进程中的重复值。例如:复制代码 代码如下:   SELECT DISTINCT t1.*   INTO holddups   FROM t1, holdkey   WHERE t1.col1 = holdkey.col1   AND t1.col2 = holdkey.col2

  4.此时,holddups 表应有唯一的 PK;但是,如果 t1 有重复的 PK 而行唯一(如上面的 SSN 示例),情况就不是这样了。请验证 holddups 中的各个键是否唯一,是否没有键重复而行唯一的情况。如果是这样,您必须停在该处,确定对于给定重复的键值,您希望保留哪些行。例如,以下查询:复制代码 代码如下:   SELECT col1, col2, count(*)   FROM holddups   GROUP BY col1, col2

  应为各行返回计数 1。如果结果是 1,请继续执行下面的步骤 5。如果不是 1,则存在键重复而行唯一的情况,且需要您决定要保存哪些行。通常,这将需要舍弃行或为此行创建新的唯一的键值。为 holddups 表中每个此种重复 PK 执行这两个步骤之一。   5.从原始表中删除重复的行。例如:复制代码 代码如下:   DELETE t1   FROM t1, holdkey   WHERE t1.col1 = holdkey.col1   AND t1.col2 = holdkey.col2

  6.将唯一行放回原始表中。例如:   INSERT t1 SELECT * FROM holddups

关于SQLServe中怎么删除重复行问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程网数据库频道了解更多相关知识。

您可能感兴趣的文档:

--结束END--

本文标题: SQLServe中怎么删除重复行

本文链接: https://www.lsjlt.com/news/57770.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SQLServe中怎么删除重复行
    SQLServe中怎么删除重复行,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Microsoft SQL Server 表不应该包含重复行...
    99+
    2022-10-18
  • Linux中怎么删除重复行
    这篇文章给大家介绍Linux中怎么删除重复行,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。第一,用sort+uniq,注意,单纯uniq是不行的。sort -n test.txt |&nb...
    99+
    2023-06-13
  • 怎么在mysql中删除重复行
    今天就跟大家聊聊有关怎么在mysql中删除重复行,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。表relation create ...
    99+
    2022-10-18
  • SQL Server中怎么删除重复行
    今天就跟大家聊聊有关SQL Server中怎么删除重复行,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1.如果有ID字段,就是具有唯一性的字段复制代...
    99+
    2022-10-18
  • shell中怎么删除文件的重复行
    本篇文章给大家分享的是有关shell中怎么删除文件的重复行,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。代码如下:cat log www.yisu.com 192.168.1....
    99+
    2023-06-09
  • Linux中怎么删除重复的文本行
    Linux中怎么删除重复的文本行,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。sort命令 - 在Linux和类Unix系统中对文本文件行进行排序。uniq命令 - 在Linu...
    99+
    2023-06-16
  • Linux中怎么删除文本中的重复行
    这篇文章将为大家详细讲解有关Linux中怎么删除文本中的重复行,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。第一,用sort+uniq,注意,单纯uniq是不行的。shell>&nbs...
    99+
    2023-06-13
  • Python删除重复行代码怎么写
    在Python中,可以使用以下方法删除重复行代码:1. 使用set()函数:将代码行放入一个set集合中,因为set集合中只包含唯一...
    99+
    2023-09-13
    Python
  • SQLServer中怎么删除重复数据
    这篇文章将为大家详细讲解有关SQLServer中怎么删除重复数据,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。方法一declare @max integer...
    99+
    2022-10-18
  • MySQL数据库中怎么查找删除重复行
    这篇文章给大家介绍MySQL数据库中怎么查找删除重复行,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。当你对b字段排序(分组),相同值的c被分到不同的组,因此不能用COUNT(DISTI...
    99+
    2022-10-18
  • vbscript中怎么从文本文件中删除重复行
    本篇文章为大家展示了vbscript中怎么从文本文件中删除重复行,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。首先,假定您有一个文本文件,其中每一行都表示一条单独的记录。这似乎不太可能,但也许您的文...
    99+
    2023-06-08
  • pd.drop_duplicates如何删除重复行
    这篇文章主要介绍了pd.drop_duplicates如何删除重复行的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇pd.drop_duplicates如何删除重复行文章都会有所收获,下面我们一起来看看吧。dro...
    99+
    2023-07-02
  • SQL Server中怎么删除重复数据
    这篇文章将为大家详细讲解有关SQL Server中怎么删除重复数据,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。方法一复制代码 代码如下: declare...
    99+
    2022-10-18
  • SQL中怎么删除ACCESS重复记录
    这期内容当中小编将会给大家带来有关SQL中怎么删除ACCESS重复记录,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。 有两个意义上的重复记录,一是完全重复的记录...
    99+
    2022-10-18
  • MySQL中怎么删除重复的记录
    MySQL中怎么删除重复的记录,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1、查找全部重复记录select * ...
    99+
    2022-10-18
  • C#中怎么删除数组重复项
    今天就跟大家聊聊有关C#中怎么删除数组重复项,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。C#删除数组重复项使用C#查找数据中重复数据,C#删除数组重复项的解决方法。个人感觉,如果在...
    99+
    2023-06-17
  • Python Pandas中DataFrame.drop_duplicates()怎么删除重复值
    这篇“Python Pandas中DataFrame.drop_duplicates()怎么删除重复值”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能...
    99+
    2023-07-02
  • mongodb怎么删除重复数据
    在MongoDB中删除重复数据可以使用聚合管道和$group操作符来实现。以下是一种常见的方法:1. 使用聚合管道和$group操作...
    99+
    2023-10-20
    mongodb
  • SQL怎么删除重复数据
    这篇文章主要介绍“SQL怎么删除重复数据”,在日常操作中,相信很多人在SQL怎么删除重复数据问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”SQL怎么删除重复数据”的疑惑有所帮助!接下来,请跟着小编一起来学习吧...
    99+
    2023-07-02
  • mysql怎么删除重复数据
    这篇文章主要讲解了“mysql怎么删除重复数据”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql怎么删除重复数据”吧!sku对应的重量表,应该一个sk...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作