SQL去重的三種方法匯總​


SQL去重的三種方法匯總​

 

這里的去重是指:查詢的時候, 不顯示重復,並不是刪除表中的重復項

1.distinct去重
注意的點:distinct
只能一列去重,當distinct后跟大於1個參數時,他們之間的關系是&&(邏輯與)關系,只有全部條件相同才會去重
弊端:當查詢的字段比較多時,distinct會作用多個字段,導致去重條件增多
select distinct UserResult from Table1

 

 

 

2.group by去重
去重原理:將重復的行進行分組,相同的數據只顯示第一行
弊端:使用group by后,所有查詢字段都需要使用聚合函數,比較繁瑣
select min(UserName)UserName,min(UserSex)UserSex,min(UserSubject)UserSubject,min(UserResult)UserResult from Table1
group by UserResult

 

 

 

3.row_number() over (parttion by 分組列 order by 排序列)
弊端:小孟還不知道
去重原理:現根據重復列進行分組,分組后再進行排序,不同的組序號為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(),穩一些!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM