SQL去重的三种⽅法汇总
SQL去重的三种⽅法汇总
这⾥的去重是指:查询的时候, 不显⽰重复,并不是删除表中的重复项
1.distinct去重
注意的点:distinct
只能⼀列去重,当distinct后跟⼤于1个参数时,他们之间的关系是&&(逻辑与)关系,只有全部条件相同才会去重
弊端:当查询的字段⽐较多时,distinct会作⽤多个字段,导致去重条件增多
select distinct UserResult from Table1
去重原理:将重复的⾏进⾏分组,相同的数据只显⽰第⼀⾏
弊端:使⽤group by后,所有查询字段都需要使⽤聚合函数,⽐较繁琐
select min(UserName)UserName,min(UserSex)UserSex,min(UserSubject)UserSubject,min(UserResult)UserResult from Table1 group by UserResult
distinct查询
弊端:⼩孟还不知道
去重原理:现根据重复列进⾏分组,分组后再进⾏排序,不同的组序号为1,相同的组序号为2,排除为2的就达到了去重效果select *from
(
--查询出重复⾏
select *,row_number() over (partition by UserResult order by UserResult desc)num from Table1
)A
where A.num=1
这⾥安利第三个,row_number(),稳⼀些!

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