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
最后展示效果:
sql 删除重复数据且保留其中一条 用sql 关键字:with ROW_NUMBER的更多相关文章
- 面试题中经常遇到的SQL题:删除重复数据,保留其中一条
如题,解决思路如下: 1.首先我们需要找出拥有重复数据的记录 ---以name字段分组 select Name,COUNT(Name) as [count] from Permission group ...
- 【转】SQL删除重复记录,只保留其中一条
SQL:删除重复数据,只保留一条用SQL语句,删除掉重复项只保留一条在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢 1.查找表中多余的重复记录,重复记录是根据单个字段(peop ...
- SQL删除重复数据只保留一条
用SQL语句,删除掉重复项只保留一条 在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢 1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select ...
- Oralce中SQL删除重复数据只保留一条(转)
用SQL语句,删除掉重复项只保留一条 在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢 .查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select ...
- SQL删除重复数据,保留一条
例如: id name value 1 a pp 2 a ...
- SQL删除重复数据只保留一条数据
1.表结构与数据: CREATE TABLE tablezzl( id int, name ) ); 2.查询出重复的数据: 3.查询出要保留的重复数据: 4.最终的SQL: DELETE FROM ...
- mysql删除重复数据只保留一条
mysql删除重复数据只保留一条 新建一张测试表: CREATE TABLE `book` ( `id` char(32) NOT NULL DEFAULT '', `name` varchar(10 ...
- oracle删除重复数据只保留一条
-- 如表role_user的数据 ROLEID USERID -- 删除相同记录只剩下一条记录 根据两个字段查询重复数据 (roleid,userid) ) 删除重复数据只保留一条 delete f ...
- mysql语句删除重复数据,保留一条;查询所有重复数据;查询重复数据的一条,
//显示重复的所有条 SELECT * FROM 表名 WHERE (字段1,字段2,...) IN (SELECT 字段1,字段2,...FROM 表名 GROUP BY 字段1,字段2,... H ...
随机推荐
- Linux 下编译安装MySQL
最近在研究Mysql,当然先要把它安装在机器上才行呀.记录下操作,加深记忆,也供以后参考. 准备工作: Linux版本:Redhat Linux 6.4 Mysql版本(安装包):mysql-5.6. ...
- python的or操作符连接多个字符串含义是什么?
研究odoo代码的时候发现其中有一行语句让人费解 self.rcfile = os.path.abspath( self.config_file or opt.config or os.environ ...
- https/相对路径,绝对路径
1. htttps HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全 ...
- Android 从图库到选择图片onActivityResult接收注意的问题
从图库选择图片然后返回数据接收处理的时候,这个时候我们可能会遇到一个问题.就是明明我走了返回的代码.但是为什么我的图片路径没有拿到?这个时候可能是Android的api不同导致,因为Android4. ...
- 自己编写的一个有关安卓应用开发培训PPT
这个是我自己编写的一个有关安卓应用开发培训PPT,适合新手. 在这里下载PPT
- Centos下安装和配置SVN
1.安装SVN服务 #检查现有版本 rpm -qa subversion #如果存储旧版本,卸载旧版本SVN yum remove subversion #安装SVN yum install subv ...
- vim没有颜色
vim /etc/vim/vimrc #查找到syntax on 启用,去掉前面的" (引号).
- 营业额统计(SBT)
营业额统计(SBT) #include<cstdio> #include<cstring> #include<string> #include<cstdlib ...
- HDU 2222 关键词查找
题目大意:给出一篇文章,长度最多1000000,若干个关键词,关键词有可能重复.关键词不超过10000,每个关键词不超过50个字符.请问该文章包含多少个关键词. 这是AC自动机的入门题.首先将关键词分 ...
- BigInger isProbablePrime
JAVA BigInteger 成员函数: isProbablePrime public boolean isProbablePrime(int certainty) 如果此 BigInteger 可 ...