SQL server去重合集

OKX欧易app

OKX欧易app

欧易交易所app是全球排名第一的虚拟货币交易所,注册领取6万元盲盒礼包!

APP下载   官网注册

distinct去重

将查询的出来的数据每一条都进行比较,只有完全相同在去重,效率低,速度慢,并且不能对text类型使用

语法:select distinct 字段1,字段2,字段3 from 表;

可以用在函数里面:

语法:select count(distinct 字段1,字段2,字段3) from 表

一、用group by作为条件去重

例表studenty:

IdNameAgeScoreGrade

1张三1268初三

2李四1360初二

3李四1359初二

4王五1578高一

Id

Name

Age

Score

Grade

张三

12

68

初三

李四

13

60

初二

李四

13

59

初二

王五

15

78

高一

要求:去除name为李四相同的数据

用distinct去重(失败):

Select distinct * from studenty;

结果:

IdNameAgeScoreGrade

1张三1268初三

2李四1360初二

3李四1359初二

4王五1578高一

Id

Name

Age

Score

Grade

张三

12

68

初三

李四

13

60

初二

李四

13

59

初二

王五

15

78

高一

未去重成功,id是不一样的

用group by去重(成功):

根据指定的条件分组后只保存每组对应的一个id号

select max(id) from studenty group by name,age

如何根据id查询结果

Select * from studenty where id in (select max(id) from studenty group by name,age)

结果:

IdNameAgeScoreGrade

1张三1268初三

3李四1359初二

4王五1578高一

Id

Name

Age

Score

Grade

张三

12

68

初三

李四

13

59

初二

王五

15

78

高一

去重成功

二、用ROW_NUMBER() OVER()排序函数去重(用法2)

语法:ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN)

解释:此函数是根据指定的字段进行分组,然后又根据另一个字段进行排序,得到一个排序的序号

例表studenty:

IdnameageScore

1李大2689

2李二2165

3李三1642

4李二2161

Id

name

age

Score

李大

26

89

李二

21

65

李三

16

42

李二

21

61

用法1:可以用于分组排序

要求:根据name分组后按照score进行排序,需全部显现出来

Select *,row_number()over(partition by name order by score) as 排序 from studenty;

结果:

IdnameageScore排序

1李大26891

4李二21611

2李二21652

3李三16421

Id

name

age

Score

排序

李大

26

89

李二

21

61

李二

21

65

李三

16

42

用法2:去重

要求:只保留每个name的一条数据

Select * from (select *,row_number()over(partition by name order by score) as排序from studenty) t where t.排序<=1;

如果想保留两条数据则为where t.排序<3;以此类推

结果:

IdnameageScore排序

1李大26891

4李二21611

3李三16421

Id

name

age

Score

排序

李大

26

89

李二

21

61

李三

16

42

本站所有软件信息均由用户上传发布,版权归原著所有。如有侵权/违规内容,敬请来信告知邮箱:764327034@qq.com,我们将及时撤销! 转载请注明出处:https://www.ssyg068.com/zhishik/270.html

打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024年05月21日
下一篇 2024年05月21日

发表回复

8206

评论列表(0条)

    暂无评论

binance币安交易所
已有2000万用户加入币安交易所

立即下载