MySQL 刪除重復(fù)數(shù)據(jù)
創(chuàng)新互聯(lián)制作網(wǎng)站網(wǎng)頁找三站合一網(wǎng)站制作公司,專注于網(wǎng)頁設(shè)計(jì),成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、成都外貿(mào)網(wǎng)站建設(shè),網(wǎng)站設(shè)計(jì),企業(yè)網(wǎng)站搭建,網(wǎng)站開發(fā),建網(wǎng)站業(yè)務(wù),680元做網(wǎng)站,已為上1000家服務(wù),創(chuàng)新互聯(lián)網(wǎng)站建設(shè)將一如既往的為我們的客戶提供最優(yōu)質(zhì)的網(wǎng)站建設(shè)、網(wǎng)絡(luò)營銷推廣服務(wù)!
有些 MySQL 數(shù)據(jù)表中可能存在重復(fù)的記錄,有些情況我們允許重復(fù)數(shù)據(jù)的存在,但有時(shí)候我們也需要?jiǎng)h除這些重復(fù)的數(shù)據(jù)。
本章節(jié)我們將為大家介紹如何防止數(shù)據(jù)表出現(xiàn)重復(fù)數(shù)據(jù)及如何刪除數(shù)據(jù)表中的重復(fù)數(shù)據(jù)。
刪除重復(fù)數(shù)據(jù)
如果你想刪除數(shù)據(jù)表中的重復(fù)數(shù)據(jù),你可以使用以下的SQL語句:
from 樹懶學(xué)堂 - 一站式數(shù)據(jù)知識平臺
當(dāng)然你也可以在數(shù)據(jù)表中添加 INDEX(索引) 和 PRIMAY KEY(主鍵)這種簡單的方法來刪除表中的重復(fù)記錄。方法如下:
在使用 MySQL 時(shí),有時(shí)需要查詢出某個(gè)字段不重復(fù)的記錄,這時(shí)可以使用mysql提供的distinct這個(gè)關(guān)鍵字來過濾重復(fù)的記錄,但是實(shí)際中我們往往用distinct來返回不重復(fù)字段的條數(shù)(count(distinct id)),其原因是distinct只能返回他的目標(biāo)字段,而無法返回其他字段,例如有如下表user:
用distinct來返回不重復(fù)的用戶名:select distinct name from user;,結(jié)果為:
這樣只把不重復(fù)的用戶名查詢出來了,但是用戶的id,并沒有被查詢出來:select distinct name,id from user;,這樣的結(jié)果為:
distinct name,id 這樣的mysql 會(huì)認(rèn)為要過濾掉name和id兩個(gè)字段都重復(fù)的記錄,如果sql這樣寫:select id,distinct name from user,這樣mysql會(huì)報(bào)錯(cuò),因?yàn)閐istinct必須放在要查詢字段的開頭。
所以一般distinct用來查詢不重復(fù)記錄的條數(shù)。
如果要查詢不重復(fù)的記錄,有時(shí)候可以用group by :
select id,name from user group by name;
可以利用distinct關(guān)鍵字對需要處理的字段進(jìn)行去重
使用group by關(guān)鍵字對去重?cái)?shù)據(jù)進(jìn)行去重查詢,針對某個(gè)字段查詢,直接group by 這個(gè)字段
在group by 的基礎(chǔ)上 也可以使用 having 對查詢結(jié)果進(jìn)行二次篩選