
MYSQL里有五百萬數(shù)據(jù),但大多是重復(fù)的,真實(shí)的就180萬,于是想怎樣把這些重復(fù)的數(shù)據(jù)搞出來,在網(wǎng)上找了一圈,好多是用NOT IN這樣的代碼,這樣效率很低,自己琢磨組合了一下,找到一個(gè)高效的處理方式,用這個(gè)方式,五百萬數(shù)據(jù),十來分鐘就全部去除重復(fù)了,請(qǐng)各位參考。

創(chuàng)新互聯(lián)建站專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè)、黎川網(wǎng)絡(luò)推廣、微信小程序開發(fā)、黎川網(wǎng)絡(luò)營(yíng)銷、黎川企業(yè)策劃、黎川品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)建站為所有大學(xué)生創(chuàng)業(yè)者提供黎川建站搭建服務(wù),24小時(shí)服務(wù)熱線:18980820575,官方網(wǎng)址:www.cdcxhl.com
第一步:從500萬數(shù)據(jù)表data_content_152里提取出不重復(fù)的字段SFZHM對(duì)應(yīng)的ID字段到TMP3表
1 create table tmp3 as select min(id) as col1 from data_content_152 group by SFZHM;
第二步:創(chuàng)建新表RES
1234 CREATE TABLE `res` (`id` int(11),`sfz` char(20)) ENGINE=MyISAM;
第三步:把TMP3表ID對(duì)應(yīng)到data_content_152里需要提取的數(shù)據(jù)添加到RES表的SFZ字段
1 INSERT INTO res (sfz) SELECT sfzhm FROM data_content_152,tmp3 where data_content_152.id=tmp3.col1
至此,就在MYSQL里實(shí)現(xiàn)了,給數(shù)據(jù)表data_content_152完全刪除重復(fù)數(shù)據(jù),把去重復(fù)后的數(shù)據(jù)導(dǎo)入到RES表。
delete from zhszty_ebook
where id not in(
select * from (select max(id) from zhszty_ebook group by url
) as tmp);------------mysql有個(gè)特性,對(duì)于表進(jìn)行修改,刪除操作,子查詢不能和外層的查詢的表一樣,所以在加個(gè)select就可以了。其他數(shù)據(jù)庫按照樓上的那個(gè)是沒問題的
1、建議以后給出列名、數(shù)據(jù)示例,這樣可以直接粘貼運(yùn)行 2、例程: SELECT DISTINCT 表1.列2,表1.列1 FROM 表1 WHERE 表1.列2 IN (SELECT 列1 FROM 表2)
select distinct id,name,mobile,city from table1 left join table2 on table1.id = table2.table1_id;
過濾重復(fù)數(shù)據(jù)
有些 MySQL 數(shù)據(jù)表中可能存在重復(fù)的記錄,有些情況我們?cè)试S重復(fù)數(shù)據(jù)的存在,但有時(shí)候我們也需要?jiǎng)h除這些重復(fù)的數(shù)據(jù)。
如果你需要讀取不重復(fù)的數(shù)據(jù)可以在 SELECT 語句中使用 DISTINCT 關(guān)鍵字來過濾重復(fù)數(shù)據(jù)。
你也可以使用 GROUP BY 來讀取數(shù)據(jù)表中不重復(fù)的數(shù)據(jù):
資料來源:樹懶學(xué)堂