共計(jì) 1099 個(gè)字符,預(yù)計(jì)需要花費(fèi) 3 分鐘才能閱讀完成。
自動(dòng)寫代碼機(jī)器人,免費(fèi)開通
這篇文章主要介紹了數(shù)據(jù)庫(kù)根據(jù)指定字段去重的案例分析,具有一定借鑒價(jià)值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓丸趣 TV 小編帶著大家一起了解一下。
需求:對(duì)一張用戶表根據(jù) name/email/card_num 字段去除重復(fù)數(shù)據(jù);
思路:用 group by 方法可以查詢出 去重 后的數(shù)據(jù),將這些數(shù)據(jù)存儲(chǔ)到一張臨時(shí)表中,然后將臨時(shí)表的數(shù)據(jù)存儲(chǔ)到指定的表中;
誤區(qū)及解決方案:group by 方法只能獲取部分字段(去重指定字段),不能一次獲取到完整的數(shù)據(jù),但是可以通過 max 函數(shù)獲取 group by 結(jié)果集中的 id,再根據(jù) id 集合查詢出全部的記錄。
測(cè)試思路查詢?nèi)ブ睾蟮臄?shù)據(jù)
SELECT max(id) as id,name,email,card_num FROM users GROUP BY name,email,card_num;
從去重后的數(shù)據(jù)中獲取 id 集合
SELECT ID from (SELECT max(id) as id,name,email,card_num FROM users GROUP BY name,email,card_num) as T;
根據(jù)去重后的數(shù)據(jù)中獲取 id 集合,從源數(shù)據(jù)中獲得記錄列表
SELECT * from users where id in (SELECT ID from (SELECT max(id) as id,name,email,card_num FROM users GROUP BY name,email,card_num) as T);
實(shí)際方法根據(jù)去重后的數(shù)據(jù)中獲取 id 集合,從源數(shù)據(jù)中獲得記錄列表,將這些列表數(shù)據(jù)存入一個(gè)臨時(shí)表中
create TEMP TABLE tmp_data as SELECT * from users where id in (SELECT ID from (SELECT max(id) as id,name,email,card_num FROM users GROUP BY name,email,card_num) as T);
將臨時(shí)表中的數(shù)據(jù)存入指定的數(shù)據(jù)表中,完畢
insert into users_copy1 select * from tmp_data;
檢測(cè)檢測(cè)結(jié)果是不是和第一步查詢?nèi)ブ睾蟮臄?shù)據(jù)總數(shù)相同
select count(*) from users_copy1;
測(cè)試結(jié)果:1.4w 條數(shù)據(jù)中有 2300 條數(shù)據(jù)重復(fù),實(shí)際運(yùn)行結(jié)果為 0.7s,基本滿足現(xiàn)在的需求。
感謝你能夠認(rèn)真閱讀完這篇文章,希望丸趣 TV 小編分享數(shù)據(jù)庫(kù)根據(jù)指定字段去重的案例分析內(nèi)容對(duì)大家有幫助,同時(shí)也希望大家多多支持丸趣 TV,關(guān)注丸趣 TV 行業(yè)資訊頻道,遇到問題就找丸趣 TV,詳細(xì)的解決方法等著你來學(xué)習(xí)!
向 AI 問一下細(xì)節(jié)
丸趣 TV 網(wǎng) – 提供最優(yōu)質(zhì)的資源集合!