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(),穩一些!