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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/420815.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jQuery 属性,css,文档操作

dom对象与jQuery对象的区别 $(function() {// dom 与 jQuery对象间的转换var $txt $(":input");// jQuery -> js// 取下标第0位var txt $txt[0];txt $txt.get(0);console.log(txt.value);txt document.getElementById("in1");// js -> jQuery$tx…

1015 德才论 (25分)

输入样例: 14 60 80 10000001 64 90 10000002 90 60 10000011 85 80 10000003 85 80 10000004 80 85 10000005 82 77 10000006 83 76 10000007 90 78 10000008 75 79 10000009 59 90 10000010 88 45 10000012 80 100 10000013 90 99 10000014 66 60 输出样例&#…

shell之文本过滤(grep)

shell之文本过滤(grep) 分类: linux shell脚本学习2012-09-14 14:17 588人阅读 评论(0) 收藏 举报shell正则表达式扩展工具存储grep(全局正则表达式版本)允许对文本文件进行模式查找。如果找到匹配模式, gr…

1016 部分A+B (15分)

输入样例 1: 3862767 6 13530293 3 输出样例 1: 399 输入样例 2: 3862767 1 13530293 8 输出样例 2: 0 # -*- coding: utf-8 -*-if __name__ __main__:input_list input().split()a, d_a, b, d_b input_list[0], input_li…

张小二:做一个幸福的胖子

最近听完了单田芳的大唐惊雷。秦琼病重,单田芳在评书中分析: 1.多次负伤 2.心机重,看不开,平时的状态都是一副严肃的表情; 在看程咬金: 每天笑哈哈,有着肥胖的身躯,看似憨厚&#xf…

IDEA2020安装

下载1 https://souyunku.lanzous.com/b0aki3kna 下载2 https://pan.baidu.com/s/1YF6o2M4PA3_97kEP4qCqGQ 提取码:kg7f把jar包往idea里面一丢,就可正常使用。

马哥学习笔记二十七——IO复用

I/O动作模式  阻塞 非阻塞 I/O复用 信号驱动 异步 转载于:https://www.cnblogs.com/wangyongbin/p/3817353.html

1017 A除以B (20分)

输入样例: 123456789050987654321 7 输出样例: 17636684150141093474 3 # -*- coding: utf-8 -*- import redef big_division(a, b):q_list, r [], 0len_a len(a)for i in range(0, len_a):dividend 10 * r eval(a[i])q_list.append(dividend // …

Idea创建web项目,配置tomcat服务器

使用idea创建web项目 新下载的idea,需要启用插件,才可创建web项目 启用Java ee,servlet有web项目选项 创建项目 选好jdk,要配置好jdk环境变量https://blog.csdn.net/crossing2012/article/details/81292547 选路径 to…

CSS 最核心的几个概念

本文将讲述 CSS 中最核心的几个概念,包含:盒模型、position、float等。这些是 CSS 的基础,也是最经常使用的几个属性,它们之间看似独立却又相辅相成。为了掌握它们,有必要写出来探讨一下,如有错误欢迎指正。…

1018 锤子剪刀布 (20分)

输入样例: 10 C J J B C B B B B C C C C B J B B C J J 输出样例: 5 3 2 2 3 5 B B 本题有几个地方需要注意: 当甲乙没有赢,怎么输出,正确答案是都输出B,这个在题目中找不出线索,有点坑&am…

jQuery api学习笔记

jQuery事件 各种事件类似点击事件 <html><head> <title>index.jsp</title><script type"text/javascript" src"js/jquery-3.2.1.js"></script><script>function click() {alert("you click me!");}…

pow(x,n) leecode

https://oj.leetcode.com/problems/powx-n/ 提交地址 快速幂的使用&#xff0c;可以研究一下 1 public class Solution {2 public double pow(double x, int n) {3 4 if(n0) return 1.0;5 if(x1) return 1.0;6 if(x0)return 0;7 i…

1020 月饼 (25分)

输入样例&#xff1a; 3 20 18 15 10 75 72 45 输出样例&#xff1a; 94.50 解题心得&#xff1a; 本题因为要排序&#xff0c;优先考虑使用二维数组和sorted最常用的模式&#xff1b;python在建立二维数组时有一个坑&#xff0c;就是[[]] * n中出现浅拷贝问题&#xff0c;…

在Java web中使用json

json包下载 下载jar包当然是下大厂滴 推荐Alibaba的fastjson推荐Google的gjson 本文讲fastjson https://github.com/alibaba/fastjson.git json的常见格式 key - value 键值对 {"key":"value"}多个key - value对 {"key1":"value"…

方法重载

Overload&#xff1a; 1、一个类中方法名字一样&#xff0c;参数不一样的&#xff08;参数类型、参数个数&#xff09;&#xff0c;可构成重载&#xff1b; 2、构造方法中也可以使用方法重载&#xff1b; 转载于:https://www.cnblogs.com/link1220/p/3825252.html

1019 数字黑洞 (20分)

输入样例 1&#xff1a; 6767 输出样例 1&#xff1a; 7766 - 6677 1089 9810 - 0189 9621 9621 - 1269 8352 8532 - 2358 6174 输入样例 2&#xff1a; 2222 解体心得&#xff1a; 在初次写str2list时没有考虑到输入是‘123’这样的情形&#xff1b; # -*- coding: …

再看数据库——(2)视图

概念 *是从用户使用数据库的观点来说的。 *从一个或多个表&#xff08;视图&#xff09;中导出来的 *一个虚表&#xff0c;或者说查询表 为什么要用视图呢&#xff1f; 一是简单&#xff0c;看到的就是需要的。视图不仅可以简化用户对数据的理解&#xff0c;也可以简化他们的操…