詳解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ǔ)句查詢(xún)數(shù)據(jù)的時(shí)候返回的是所有匹配的行。
SELECT t.age FROM t_user t
可以看到查詢(xún)結(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é)果可以看到,這次查詢(xún)結(jié)果只返回了 5 條記錄的 age 值,且沒(méi)有重復(fù)的值。
ps:
其中,“字段名”為需要消除重復(fù)記錄的字段名稱(chēng),多個(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 = '分類(lèi)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中使用SQL語(yǔ)句查看某個(gè)表的編碼方法
下面小編就為大家?guī)?lái)一篇MySQL中使用SQL語(yǔ)句查看某個(gè)表的編碼方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-11-11徹底搞懂?dāng)?shù)據(jù)庫(kù)操作truncate delete drop關(guān)鍵詞的區(qū)別
這篇文章主要為大家介紹了數(shù)據(jù)庫(kù)操作truncate delete drop關(guān)鍵詞的區(qū)別,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09MySQL中配置文件my.cnf因權(quán)限問(wèn)題導(dǎo)致無(wú)法啟動(dòng)的解決方法
這篇文章主要給大家介紹了關(guān)于MySQL中配置文件my.cnf因權(quán)限問(wèn)題導(dǎo)致無(wú)法啟動(dòng)的解決方法,該無(wú)法啟動(dòng)的錯(cuò)誤提示代碼是:World-writable config file '/etc/my.cnf' is ignored,文中給出了詳細(xì)的解決方法,需要的朋友們下面來(lái)一起看看吧。2017-06-06MySQL通配符與正則表達(dá)式搜過(guò)濾數(shù)據(jù)詳解
簡(jiǎn)單來(lái)說(shuō),正則表達(dá)式就是用來(lái)匹配文本的特殊字符串,下面這篇文章主要給大家介紹了關(guān)于MySQL通配符與正則表達(dá)式搜過(guò)濾數(shù)據(jù)的相關(guān)資料,文中通過(guò)實(shí)例代碼以及圖文介紹的非常詳細(xì),需要的朋友可以參考下2022-09-09重裝MySQL最后一步失敗的完美解決方案(經(jīng)驗(yàn)總結(jié))
使用MySQL都有過(guò)重裝的經(jīng)歷,要是重裝MySQL基本都是在最后一步通不過(guò),究竟是什么原因呢?下面是我總結(jié)的一點(diǎn)經(jīng)驗(yàn),都是血的教訓(xùn)2014-06-06MySQL ClickHouse常用表引擎超詳細(xì)講解
這篇文章主要介紹了MySQL ClickHouse常用表引擎,ClickHouse表引擎中,CollapsingMergeTree和VersionedCollapsingMergeTree都能通過(guò)標(biāo)記位按規(guī)則折疊數(shù)據(jù),從而達(dá)到更新和刪除的效果2022-11-11MYSQL中常用的強(qiáng)制性操作(例如強(qiáng)制索引)
對(duì)于經(jīng)常使用oracle的朋友可能知道,oracle的hint功能種類(lèi)很多,對(duì)于優(yōu)化sql語(yǔ)句提供了很多方法。同樣,在mysql里,也有類(lèi)似的hint功能。2014-05-05