SQL rver去重

更新时间:2023-07-11 20:02:18 阅读: 评论:0

distinct去重
将查询的出来的数据每一条都进行比较,只有完全相同在去重,效率低,速度慢,并且不能对text类型使用
语法:lect distinct 字段1,字段2,字段3 from 表;
可以用在函数里面:
语法:lect count(distinct 字段1,字段2,字段3) from 表
一、用group by作为条件去重
例表studenty:
Id
Name
Age
Score
Grade
1
张三
12
68
初三
2
李四
13
60
初二
3
李四
13
59
初二
4
王五
15
78
高一梨花风起正清明
要求:去除name为李四相同的数据
用distinct去重(失败):
Select distinct * from studenty;
结果:
Id
Name
Age
Score
Grade
1
张三
12
68
初三
2套餐怎么退订
李四
13
60
初二
3
李四
13
59
初二
4
王五
15
78
高一
未去重成功,id是不一样的
用group by去重(成功):
根据指定的条件分组后只保存每组对应的一个id号
lect max(id) from studenty group by name,age
如何根据id查询结果
Select * from studenty where id in (lect max(id) from studenty group by name,age)
结果:
随风摇曳学习思维
Id
Name
Age
Score
Grade
1
张三
12
68
初三
3
李四
13
59
初二
4
王五
15
78
高一
去重成功
二、用ROW_NUMBER() OVER()排序函数去重(用法2)
语法:ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN)
解释:此函数是根据指定的字段进行分组,然后又根据另一个字段进行排序,得到一个排序的序号
例表studenty
Id
name
age
Score
1
李大
26
89戊己庚辛
2
李二
21
65
3
李三
16
42
4
李二
幽默脑筋急转弯
21
61
菊花茶有什么功效用法1:可以用于分组排序
要求:根据name分组后按照score进行排序,需全部显现出来
Select *,row_number()over(partition by name order by score) as 排序 from studenty;
结果:
Id
name
许铭
age
Score
排序
1
李大
26
89
1
4
李二
21
61
1
2
李二
21
65
2
3
李三
16
42
1
用法2:去重
要求:只保留每个name的一条数据
Select * from (lect *,row_number()over(partition by name order by score) as排序from studenty)  t where t.排序<=1;
如果想保留两条数据则为where t.排序<3;以此类推
结果:
Id
name
age
Score
排序
1
李大
26
89
1
4
李二
21
61
1
3
李三
16
42
1

本文发布于:2023-07-11 20:02:18,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/1091303.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:排序   分组   进行
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图