sql 删除重复数据且保留其中一条 用sql 关键字:with ROW_NUMBER
--1、建立表:Course
create table Course
(
ID int identity(1,1),--ID
Student varchar(20) ,--学生
Sub varchar(20) ,--课程
)
--2、插入数据
INSERT INTO Course
VALUES ('张三','语文'),('李四','语文' ),('王五','语文' )
INSERT INTO Course
VALUES ('张三','语文'),('李四','英语' ),('王五','数学' )
INSERT INTO Course
VALUES ('张三','数学'),('李四','英语' ),('王五','英语' )
INSERT INTO Course
VALUES ('张三','语文'),('李四','英语' ),('王五','数学' )
select * from Course order by ID
展示效果:
--2、Num:根据 学生、课程 汇总排序;with就是把查询的数据放到TempCourse表中
--最后对TempCourse筛选出 姓名+课程 重复的数据保留ID最小的(num>1)存入临时表 #TmpDeletedTb
;WITH TmpCourse (ID,Student,Sub,Num)
as
(
select ID,Student,Sub,ROW_NUMBER() OVER(PARTITION BY Student,Sub ORDER BY ID ) as num
from Course
)
SELECT * into #TmpDeletedTb FROM TmpCourse where num>1 order by Student,Sub,ID
select * from #TmpDeletedTb
展示效果:
--3、删除重复数据 且保留ID最小数据
delete Course from Course a
inner join #TmpDeletedTb Del on del.ID=a.ID
select * from Course
最后展示效果:
最新文章
- 搭建OpenGL环境-Windows/VS2013
- python中mysqldb的用法
- linux 服务初识
- 【python】浅谈encode和decode
- JavaWeb项目开发案例精粹-第6章报价管理系统-06po层
- android.os.NetworkOnMainThreadException异常处理办法
- 笔试题&;amp;面试题:找出一个数组中第m小的值并输出
- 了解你的被测系统(why?)
- C#中的协变OUT和逆变
- centos7 简单搭建lnmp环境
- C++\virtual 虚函数、纯虚函数
- react实战项目开发(2) react几个重要概念以及JSX语法
- js对input框的可编辑属性设置
- 微信小程序,图片居中显示,适配不同机型
- bootstrap fileinput 使用记录
- Linux Centos下查看cpu、磁盘、内存使用情况,关闭MySQL日志
- Pony 编程语言介绍
- java中 this 关键字的三种用法
- 详细解读Volley(五)—— 通过源码来分析业务流程
- POJ 2371
热门文章
- help man info 三个的区别
- 论SCRM系统对传统行业的冲击
- Linear Algebra Lecture5 note
- 酷炫ILOVEU
- 嵌入式系统添加无线wifi模块
- 使用keytool 生成证书
- Linux入侵检查思路及其命令 转自https://yq.aliyun.com/articles/24250?spm=5176.100239.blogcont24249.12.rbBrIh
- 【java】jackson 中JsonFormat date类型字段的使用
- php mysql 一个查询优化的简单例子
- python中import和from...import区别