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

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

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

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

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

