詳解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)文章
徹底搞懂數(shù)據(jù)庫操作truncate delete drop關(guān)鍵詞的區(qū)別
這篇文章主要為大家介紹了數(shù)據(jù)庫操作truncate delete drop關(guān)鍵詞的區(qū)別,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-09-09MySQL中配置文件my.cnf因權(quán)限問題導(dǎo)致無法啟動的解決方法
這篇文章主要給大家介紹了關(guān)于MySQL中配置文件my.cnf因權(quán)限問題導(dǎo)致無法啟動的解決方法,該無法啟動的錯誤提示代碼是:World-writable config file '/etc/my.cnf' is ignored,文中給出了詳細的解決方法,需要的朋友們下面來一起看看吧。2017-06-06MySQL通配符與正則表達式搜過濾數(shù)據(jù)詳解
簡單來說,正則表達式就是用來匹配文本的特殊字符串,下面這篇文章主要給大家介紹了關(guān)于MySQL通配符與正則表達式搜過濾數(shù)據(jù)的相關(guān)資料,文中通過實例代碼以及圖文介紹的非常詳細,需要的朋友可以參考下2022-09-09重裝MySQL最后一步失敗的完美解決方案(經(jīng)驗總結(jié))
使用MySQL都有過重裝的經(jīng)歷,要是重裝MySQL基本都是在最后一步通不過,究竟是什么原因呢?下面是我總結(jié)的一點經(jīng)驗,都是血的教訓2014-06-06