位置: 编程技术 - 正文

SQLServe 重复行删除方法(sql server删除重复数据保留一条)

编辑:rootadmin

Microsoft SQL Server 表不应该包含重复行和非唯一主键。为简洁起见,在本文中我们有时称主键为“键”或“PK”,但这始终表示“主键”。重复的 PK 违反了实体完整性,在关系系统中是不允许的。SQL Server 有各种强制执行实体完整性的机制,包括索引、唯一约束、主键约束和触发器。 尽管如此,在某些情况下还可能会出现重复的主键;如果出现此类情况,就必须清除重复主键。出现重复主键的情形之一是,在 SQL Server 外部的非关系数据中存在重复的 PK,在导入这些数据时没有强制执行 PK 唯一性。出现重复主键的另一种情形来自数据库设计错误,如没有对每张表强制执行实体完整性。   通常在尝试创建唯一索引时会发现重复的 PK,因为如果找到重复的键,唯一索引的创建即会中止,并且将显示以下消息:   Msg , Level , State 1 Create unique index aborted on duplicate key.   如果使用的是 SQL Server 或 SQL Server ,则会收到以下错误消息:   Msg , Level , 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。该过程演示如何识别和删除重复的主键。   第一步是识别哪些行具有重复的主键值:   这将为表中的每组重复的 PK 值返回一行。此结果中的最后一列是特定 PK 值的重复数。   col1 col2   1 1 2   如果只有几组重复的 PK 值,则最佳方法是手动逐个删除它们。例如:   rowcount 值应该是给定键值的重复数减去 1。在该示例中,有 2 个重复的主键,所以 rowcount 被设置为 1。col1/col2 值来自上面的 GROUP BY 查询结果。如果 GROUP BY 查询返回多行,则“set rowcount”查询将必须为这些行中的每一行各运行一次。每次运行该查询时,将 rowcount 设置为特定 PK 值的重复数减去 1。   在删除行之前,您应该验证是否整行重复。虽然整行重复不太可能发生,但可能 PK 值重复,而整行不重复。例如一个将身份证号码作为主键的表,该表有两个具有相同号码的不同的人(即行),但每个人有唯一的属性。在这种情况下,任何引起重复键的问题可能还引起在行中放入有效的唯一的数据。在删除该数据之前,应该将该数据复制出来并保存下来以进行研究和适当的调整。  如果表中有多组完全不同的重复的 PK 值,则逐个删除它们会很费时间。在这种情况下,可使用下面的方法: 1.首先,运行上面的 GROUP BY 查询来确定有多少组重复的 PK 值及每组的重复数。   2.选择重复的键值放入临时表中。例如:   3.选择重复的行放入临时表中,以清除进程中的重复值。例如:   4.此时,holddups 表应有唯一的 PK;但是,如果 t1 有重复的 PK 而行唯一(如上面的 SSN 示例),情况就不是这样了。请验证 holddups 中的各个键是否唯一,是否没有键重复而行唯一的情况。如果是这样,您必须停在该处,确定对于给定重复的键值,您希望保留哪些行。例如,以下查询:   应为各行返回计数 1。如果结果是 1,请继续执行下面的步骤 5。如果不是 1,则存在键重复而行唯一的情况,且需要您决定要保存哪些行。通常,这将需要舍弃行或为此行创建新的唯一的键值。为 holddups 表中每个此种重复 PK 执行这两个步骤之一。   5.从原始表中删除重复的行。例如:   6.将唯一行放回原始表中。例如:   INSERT t1 SELECT * FROM holddups

推荐整理分享SQLServe 重复行删除方法(sql server删除重复数据保留一条),希望有所帮助,仅作参考,欢迎阅读内容。

SQLServe 重复行删除方法(sql server删除重复数据保留一条)

文章相关热门搜索词:sqlserver删除重复记录,sql重复数据删除,sql语句删除重复记录,sqlserver删除重复记录保留一条,sql重复行数据删除,sql语句删除重复记录,sql重复行数据删除,sql重复行数据删除,内容如对您有帮助,希望把文章链接给更多的朋友!

SQLServer 数据修复命令DBCC一览 1.DBCCCHECKDB重启服务器后,在没有进行任何操作的情况下,在SQL查询分析器中执行以下SQL进行数据库的修复,修复数据库存在的一致性错误与分配错误。u

SQLSERVERS 数据整理方法 今天星期天,因数据库太慢,最后决定将数据库进行重新整理.(假定数据库名称为:DB_ste)1、根据现在的数据库的脚本创建一个脚本文件(FILENAME:DB_ste.sql)2

根据多条件查询临时表 想得到不同结果集的方法 当我写下如下sql语句时,我得到了输入@c参数时想得到的结果集。select*from@tbtwheret.idin(selectidfromtbwheref=@c)但如果有@a,@b,@c,而它们分别想从@tb中得到不同

标签: sql server删除重复数据保留一条

本文链接地址:https://www.jiuchutong.com/biancheng/349768.html 转载请保留说明!

上一篇:sql 查询结果合并union all用法_数据库技巧(sql将查询的结果拼接)

下一篇:SQLServer 数据修复命令DBCC一览(sqlsever修改数据)

  • 税款滞纳金和利息
  • 月初没报完税可以开票吗
  • 账面成本包含增值税吗
  • 分期付款发票开具
  • 银行存款余额调节表编制
  • 车辆备注栏备注怎么填
  • 需要安装的固定资产入账价值包括增值税吗
  • 增票普票税额是否可以抵扣吗
  • 分公司清算和总公司清算
  • 外单位的人能否作为本单位的费用报销人?
  • 工资3500该不该辞职
  • 国税定额发票有效期是多长时间
  • 公司客车高速费如何抵扣进项税?
  • 企业交的社保是什么
  • 查验发票真伪新旧有哪些网站?
  • 转股交印花税的优惠政策
  • 德邦物流增值税发票怎么开
  • 增值税专用发票和普通发票的区别
  • 哪些业务不需要进行平行记账
  • 小规模纳税人月末结转增值税
  • 资产总计与负债和所有者权益总计不一致
  • 所得税季报营业收入本年累计
  • 生产企业办理出口退税时要提供发票吗
  • 一般纳税人出售不动产增值税税率是多少
  • 电子产品怎么计税
  • 不能取得发票的财务费用怎么做明细好一点
  • 成本分摊会计
  • windows defender隔离区
  • 发票盖错章了怎么办呢
  • 如何利用流产让男人愧疚
  • SWNETSUP.EXE - SWNETSUP是什么进程 有什么用
  • 员工油费补贴过期怎么办
  • PHP:session_encode()的用法_Session函数
  • php语言之面向对象编程 educoder
  • php怎么与mysql连接
  • PHP:mcrypt_enc_self_test()的用法_Mcrypt函数
  • 工程竣工决算会计账务处理
  • 固定资产以前年度未入账怎么处理
  • 增值税纳税人如何界定
  • 残保金所属期怎么写
  • 07. vue3+vite+qiankun搭建微应用前端框架,并接入vue3微应用
  • 二元运算例子
  • phpcms v9官网
  • 进项发票和销项发票统计
  • 应收票据应付票据合并抵消吗
  • 文化传媒公司介绍
  • 出口产品报关多少天
  • 跨月更正申报会扣信用分么
  • 以前年度损益调整结转到哪里
  • 分配人工费的会计分录
  • 积分换物品是真的吗
  • 增资后持股比例计算
  • 税控设备维护费会计分录
  • 咨询服务行业的收入与成本
  • 低值易耗的管理制度
  • 存货盘亏的账务处理怎么做
  • sql server高级应用
  • 系统存储过程以什么开头
  • xampp网页服务器配置文件名
  • 返回sql执行时间的方法
  • cmd命令怎么进入d盘文件夹
  • windows10新功能
  • 生成系统健康报告怎么弄
  • 如何在linux中添加环境变量
  • Linux驱动程序开发视频教程
  • window10英文版下载
  • linux不小心删除目录怎么恢复
  • 批处理 >nul
  • 基于jquery实现可定制的web在线富文本编辑器附源码下载
  • css如何把图片重叠在一起
  • unity协程执行顺序
  • php绘制图形函数
  • python微信查单删
  • jQuery实现的tab标签切换效果示例
  • 浙江省国税电子税务局如何新增企业
  • 安徽营业执照网上怎么申请
  • 福州电动车怎么报废处理
  • 西北地区的沙尘暴
  • 重庆医疗app
  • 关于啤酒包装物押金,下列正确的是( )
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设