詳解mysql數(shù)據(jù)去重的三種方式
一、背景
最近在和系統(tǒng)模塊做數(shù)據(jù)聯(lián)調(diào),其中有一個需求是將兩個角色下的相關(guān)數(shù)據(jù)?對比后將最新的數(shù)據(jù)返回出去,于是就想到了去重,再次做一個總結(jié)。
二、數(shù)據(jù)去重三種方法使用

1.?通過MySQL DISTINCT:去重(過濾重復(fù)數(shù)據(jù))
? 1.1.在使用 mysql SELECT 語句查詢數(shù)據(jù)的時候返回的是所有匹配的行。
SELECT t.age FROM t_user t

可以看到查詢結(jié)果返回了 10 條記錄,其中有一些重復(fù)的 age 值,有時出于對數(shù)據(jù)分析的要求,需要消除重復(fù)的記錄值。
1.2.DISTINCT 關(guān)鍵字指示 MySQL 消除重復(fù)的記錄值。
語法格式為:
SELECT DISTINCT <字段名> FROM <表名>;

SELECT DISTINCT t.age FROM t_user t
由運行結(jié)果可以看到,這次查詢結(jié)果只返回了 5 條記錄的 age 值,且沒有重復(fù)的值。
ps:
其中,“字段名”為需要消除重復(fù)記錄的字段名稱,多個字段時用逗號隔開。
使用 DISTINCT 關(guān)鍵字時需要注意以下幾點:
DISTINCT 關(guān)鍵字只能在 SELECT 語句中使用。
在對一個或多個字段去重時,DISTINCT 關(guān)鍵字必須在所有字段的最前面。
如果 DISTINCT 關(guān)鍵字后有多個字段,則會對多個字段進行組合去重,也就是說,只有多個字段組合起來完全是一樣的情況下才會被去重。
2.group by

SELECT t.age FROM t_user t GROUP BY t.age;
3.row_number窗口函數(shù)
語法格式為:
row_number() over (partition by <用于分組的字段名> order by <用于組內(nèi)排序的字段名>)
項目使用的去重:?
select * from (select t.*,row_number() over(partition by t.children_id order by t.update_time DESC) rn from mdm_data_authority_view_info t where t.DATA_CLASS_ID = '分類id' AND t.DATA_ROLE_ID IN ( '角色id', '角色id' )) where rn = 1;
三、總結(jié)
到此這篇關(guān)于詳解mysql數(shù)據(jù)去重的三種方式的文章就介紹到這了,更多相關(guān)mysql數(shù)據(jù)去重內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL SELECT?...for?update的具體使用
本文主要介紹了MySQL的SELECT?...for?update的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-05-05
mysql 批量查詢?nèi)∶恳唤M最新一條數(shù)據(jù)
根據(jù)車牌號查詢最新的一條交車記錄的‘合同號’ ,這里只需要查詢‘合同號’這個字段,這篇文章主要介紹了mysql 批量查詢?nèi)∶恳唤M最新一條數(shù)據(jù),需要的朋友可以參考下2024-02-02
將MySQL從MyISAM轉(zhuǎn)換成InnoDB錯誤和解決辦法
原來自己用的是為了裝的, 所以在設(shè)置database usage(如下圖1)的時候按照discuz官方的建議,選的都是Non-Transactional Database Only(只支持MyISAM數(shù)據(jù)引擎的非事務(wù)數(shù)據(jù)庫),用MyISAM數(shù)據(jù)庫,還沒涉及到需要InnoDB,因此打算直接不加載INNODB引擎。2011-09-09
SQLServer 2005 自動備份數(shù)據(jù)庫的方法分享(附圖解教程)
SQLServer 2005 自動備份數(shù)據(jù)庫的方法分享(附圖解教程),使用sqlserver2005的朋友可以參考下。2011-09-09
select count()和select count(1)的區(qū)別和執(zhí)行方式講解
今天小編就為大家分享一篇關(guān)于select count()和select count(1)的區(qū)別和執(zhí)行方式講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-03-03

