mysql 去重 根據id 資料庫根據指定欄位去重

2021-10-13 06:35:48 字數 1055 閱讀 7861

需求:對一張使用者表根據name/email/card_num欄位去除重複資料;

思路:用group by方法可以查詢出'去重'後的資料,將這些資料儲存到一張臨時表中,然後將臨時表的資料儲存到指定的表中;

誤區及解決方案:group by方法只能獲取部分字段(去重指定字段),不能一次獲取到完整的資料,但是可以通過max函式獲取group by結果集中的id,再根據id集合查詢出全部的記錄。

測試思路查詢去重後的資料

select max(id) as id,name,email,card_num from users group by name,email,card_num;從去重後的資料中獲取id集合

select id from (select max(id) as id,name,email,card_num from users group by name,email,card_num) as t;根據去重後的資料中獲取id集合,從源資料中獲得記錄列表

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);

實際方法根據去重後的資料中獲取id集合,從源資料中獲得記錄列表,將這些列表資料存入乙個臨時表中

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);將臨時表中的資料存入指定的資料表中,完畢

insert into users_copy1 select * from tmp_data;

檢測檢測結果是不是和第一步查詢去重後的資料總數相同

select count(*) from users_copy1;

測試結果:1.4w條資料中有2300條資料重複,實際執行結果為0.7s,基本滿足現在的需求。

資料庫去重

資料庫資料去重方法 假設現在資料庫中有乙個人員表 user 表中包括 主鍵id,姓名name 身份證號碼id number等字段。由於程式的的原因,後來發現表中有許多理論上重複的資料 例如姓名 和身份證號相同的資料 現在要求根據身份證號碼和姓名去除表中的重複資料。select max id from...

mysql id 重排 mysql資料庫 id重排

mysql資料庫 id重排 雲伺服器 elastic compute service,簡稱ecs 是阿里雲提供的效能卓越 穩定可靠 彈性擴充套件的iaas infrastructure as a service 級別雲計算服務。雲伺服器ecs免去了您採購it硬體的前期準備,讓您像使用水 電 天然氣等...

mysql語句 資料庫去重

就簡單寫乙個例項 資料庫表結構 create table service id bigint 20 not null auto increment,aa varchar 255 default null comment 說明 bb varchar 255 not null comment 方法名 p...