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:

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号

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)

结果:

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 (select *,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

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

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

相关推荐

  • 超详细的四类数据库去重实现方案汇总,值得收藏

    概述今天主要闲聊Oracle、MySQL、sqlserver、pg数据库在删除重复数据时是怎么实现的,仅供参考。一、Oracle数据库去重1、环境准备可以看到“ALLEN”和“SMITH”这两个人的数据重复了,现在要求表中name重复的数据只保留一行,其他的删除。CREATE TABLE hwb( id int, name var

    2024-07-03 11:35:01
    8707 0

发表回复

8206

评论列表(0条)

    暂无评论

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

立即下载