SQL去重的三种方法

目录

1.distinct去重

2.group by去重

3.row_number() over (parttion by 分组列 order by 排序列)


有这么一张test的表, 我们将对这张表进行操作来自验证去重

SQL去重的三种方法_第1张图片

这里的去重:查询的时候, 不显示重复,并不是删除表中的重复项

1.distinct去重

只能一列去重,当distinct后跟大于1个参数时,他们之间的关系是&&(逻辑与)关系,只有全部条件相同才会去重
弊端:当查询的字段比较多时,distinct会作用多个字段,导致去重条件增多

sql:select DISTINCT score from test

预设结果:80分 90分和100分

SQL去重的三种方法_第2张图片

2.group by去重


去重原理:将重复的行进行分组,相同的数据只显示第一行
弊端:使用group by后,所有查询字段都需要使用聚合函数,比较繁琐

sql: select min(UserName)UserName,min(gender),min(score)score from test
group by score

看结果:

SQL去重的三种方法_第3张图片

3.row_number() over (parttion by 分组列 order by 排序列)


去重原理:现根据重复列进行分组,分组后再进行排序,不同的组序号为1,相同的组序号为2,排除为2的就达到了去重效果

sql:  
select *from
(
select *,row_number() over (partition by score order by score desc)num from test
)A
where A.num=1

补充: “ROW_NUMBER() OVER (ORDER BY Column1 DESC) 根据Column1 降序排列,再为降序之后的每条数据加上序号

看结果:

SQL去重的三种方法_第4张图片

 

你可能感兴趣的:(sql,数据库)