MSSQL如何在没有主键的表中删除重复数据
原文:MSSQL如何在没有主键的表中删除重复数据

为了对重复数据进行实验,下面建一个设计不太好(没有主键)表并插入了一些重复数据:

create database testdbuse testdb ;
go
create table DupsNoPK
(Col1 int Null,Col2 char(5) Null
);
goinsert DupsNoPK(Col1,Col2)
Values(1,'abc'),(2,'abc'),(2,'abc'),(2,'abc'),(7,'xyz'),(7,'xyz');

为了验证表确实有重复数据,下面查询运用了一个group by 和having 子句只返回重复行,并对副本计数:

select Col1,Col2,Count(*) AS DupCount
from DupsNoPK
group by Col1,Col2
having count(*)>1;

结果:

下面是运用窗口化删除重复行:

这种方法的关键是运用窗口化的,有row_number()函数和分区的over()子句。每个新分区会重新编号。设置over()子句为partition by每个要检查重复数据的列。在这种情况下每一列都会进行检查。

运行窗口化查询,首先显示方法如何应用于行号:

select Col1,Col2, row_number()over(partition by Col1,Col2 order by Col1)as rn from DupsNoPK

结果:

每一个重复行都有一个比1大的rn值,所以,删除副本是比较容易的:

with DupsNumbered
as(select Col1,Col2,row_number()over(partition by Col1,Col2 order by Col1) as rnfrom DupsNoPK)
delete DupsNumbered where rn>1;

结果:

执行完上面语句后,下面用一条select语句测试删除重复数据的结果:

posted on 2014-06-28 10:28 NET未来之路 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/lonelyxmas/p/3813058.html

MSSQL如何在没有主键的表中删除重复数据相关推荐

  1. sql删除表中重复记录_SQL从SQL表中删除重复行的不同方法

    sql删除表中重复记录 This article explains the process of performing SQL delete activity for duplicate rows f ...

  2. 温故知新MySQL--如何在MySQL表中删除重复行

    2019独角兽企业重金招聘Python工程师标准>>> 如何在MySQL表中删除重复行 在实际应用中,会有需要删除重复数据的场景.这里简单介绍下如何删除重复的数据 1. 准备数据 C ...

  3. mysql scrapy 重复数据_MySQL大数据量表中删除重复记录

    MySQL大数据量表中删除重复记录 最近工作中需要抓取大量新闻,抓取的数据中由于一些原因存在一些重复数据,而整个数据表的记录数接近10万条,大小接近1个G,又在我自己的渣渣本本上,查询速度十分不理想, ...

  4. 怎么有效地查询MySQL表中的重复数据

    在MySQL数据库中,偶尔会遇到需要查找表中出现的重复数据的情况.这种情况下,我们可以通过编写一些SQL查询语句轻松地找到并处理这些重复行.本文将介绍一些常见的方法和技巧,帮助你有效地查询MySQL表 ...

  5. Oracle删除表中的重复数据

    Oracle数据库删除表中的重复数据,只保留其中的一条,以两个字段为例,提供两种方法 ①.直接delete重复的数据 delete from table_name t1 where (t1.col1, ...

  6. MYSQL 删除表中的重复数据

    test表中的原始数据: test表中name字段信息有重复,想进行过滤删除重复数据 删除重复数据之后的预期结果(不考虑id): 方法一: 用 create ......select......gro ...

  7. mysql 如何删除重复的行_如何从mysql中的表中删除重复的行

    我需要从 mysql中删除表中的重复记录. 所以我有一个表名"employee"字段是empid,empname,empssn 为了获得重复记录我写了一个查询 SELECT COU ...

  8. 在ORACLE中如何删除表中的重复数据

    我们可能会出现这种情况,某个表原来设计不周全,导致表里面的数据数据重复,那么,如何对重复的数据进行删除呢? 重复的数据可能有这样两种情况,第一种时表中只有某些字段一样,第二种是两行记录完全一样. 一. ...

  9. 【WPS表格】标记出表中的重复数据,并新建工作表

    利用[数据对比]功能,标记出单元表中的重复数据并新建工作表: 注意:这是WPS的会员功能

最新文章

  1. 扩展存储过程在哪里_青浦区智能仓储哪里有,一件代发1.9元全国_1.9元发全国-上海东臻仓储服务...
  2. cuda版本的word2vec
  3. ai的预览模式切换_AI字体制作,用AI制作创意阶梯式文字
  4. jdk12源代码文件_JDK 11:轻松取出单文件Java源代码程序
  5. word手写字体以假乱真_Word小技巧|打印作文草稿纸
  6. 英伟达为全自动驾驶汽车打造AI计算机,计算力达上代10倍
  7. VMware虚拟机Centos7配置双网卡双IP踩坑
  8. 华为NP课程笔记1-OSPF1
  9. 2022-09-21 虚机安装威联通 QuTScloud
  10. Docker buildx 安装
  11. 重磅发布:《AI产品经理的实操手册(2021版)——AI产品经理大本营的4年1000篇干货合辑》(PDF)...
  12. 远期债券收益率期望曲率调整
  13. php判断运营商,php识别手机号码运营商简单示例
  14. python云计算1_python云计算1
  15. 计算机网络第五章(谢希仁)--运输层 思维导图
  16. 基于STM32U5片内GPDMA Burst传输应用示例
  17. 黑马程序员_Java_交通灯管理
  18. 【Linux】CentOS7 C#开发环境搭建笔记(Jexus安装、配置、部署)
  19. 国产FPGA(紫光同创)—— 数据采集及千兆以太网传输(二)
  20. EffectiveC++-条款39:明智而审慎地使用 private 继承

热门文章

  1. 解决列表某项文字过度过多 需要自适应撑开高度展示 其他项目按照行高居中
  2. 安卓BLE开发教程(一) BLE基础
  3. Taro+react开发(25)三元
  4. 前端学习(3256):react中添加todolist
  5. 前端学习(2915):数据绑定
  6. 前端学习(2635):vs 需要插件下载
  7. “约见”面试官系列之常见面试题之第七十一篇之let和var和const区别(建议收藏)
  8. “约见”面试官系列之常见面试题第七篇说说Vue的生命周期(建议收藏)
  9. 前端学习(660):比较运算符
  10. mybatis学习(49):嵌套查询--一对多