mysql怎么刪除數(shù)據(jù)庫(kù)中的重復(fù)記錄?

mysql刪除數(shù)據(jù)庫(kù)中重復(fù)記錄的步驟:首先統(tǒng)計(jì)重復(fù)數(shù)據(jù);然后使用“SELECT DISTINCT”語(yǔ)句過(guò)濾重復(fù)數(shù)據(jù);最后在數(shù)據(jù)表中添加INDEX和PRIMAY KEY來(lái)刪除表中的重復(fù)記錄即可。

mysql怎么刪除數(shù)據(jù)庫(kù)中的重復(fù)記錄?

對(duì)于常規(guī)的MySQL數(shù)據(jù)表中可能存在重復(fù)的數(shù)據(jù),有些情況是允許重復(fù)數(shù)據(jù)的存在,有些情況是不允許的,這個(gè)時(shí)候我們就需要查找并刪除這些重復(fù)數(shù)據(jù),以下是具體的處理方法!

相關(guān)學(xué)習(xí)推薦:mysql教程(視頻)

方法一:防止表中出現(xiàn)重復(fù)數(shù)據(jù)

當(dāng)表中未添加數(shù)據(jù)時(shí),可以在MySQL數(shù)據(jù)表中設(shè)置指定的字段為PRIMARY KEY(主鍵) 或者 UNIQUE(***) 索引來(lái)保證數(shù)據(jù)的***性。

例如在學(xué)生信息表中學(xué)號(hào)no不允許重復(fù),需設(shè)置學(xué)號(hào)no為主鍵,且默認(rèn)值不能為NULL。

CREATE?TABLE?student? (? no?CHAR(12)?NOT?NULL,? name?CHAR(20),? sex?CHAR(10),? PRIMARY?KEY?(no)? );

方法二:過(guò)濾刪除重復(fù)值

對(duì)于數(shù)據(jù)表中原有的數(shù)據(jù),想要去除重復(fù)數(shù)據(jù)需要經(jīng)過(guò)重復(fù)數(shù)據(jù)查找、過(guò)濾以及刪除等步驟。

1. 統(tǒng)計(jì)重復(fù)數(shù)據(jù)

mysql>?SELECT?COUNT(*)?as?repetitions,no? ->?FROM?student? ->?GROUP?BY?no? ->?HAVING?repetitions?>?1;

以上查詢語(yǔ)句將返回student表中重復(fù)的記錄數(shù)。

2. 過(guò)濾重復(fù)數(shù)據(jù)

如果需要讀取不重復(fù)的數(shù)據(jù)可以在SELECT 語(yǔ)句中使用 DISTINCT 關(guān)鍵字來(lái)過(guò)濾重復(fù)數(shù)據(jù)。

mysql>?SELECT?DISTINCT?no? ->?FROM?student;

也可以使用 GROUP BY 來(lái)讀取數(shù)據(jù)表中不重復(fù)的數(shù)據(jù)

mysql>?SELECT?no? ->?FROM?student? ->?GROUP?BY?(no);

3. 刪除重復(fù)數(shù)據(jù)

刪除數(shù)據(jù)表中重復(fù)數(shù)據(jù),可以使用以下SQL語(yǔ)句:

mysql>?CREATE?TABLE?tmp?SELECT?no,?name,?sex?FROM?student?GROUP?BY?(no,?sex);? mysql>?DROP?TABLE?student;? mysql>?ALTER?TABLE?tmp?RENAME?TO?student;

也可以在數(shù)據(jù)表中添加INDEX(索引)和 PRIMAY KEY(主鍵)來(lái)刪除表中的重復(fù)記錄,方法如下:

mysql>?ALTER?IGNORE?TABLE?student? ->?ADD?PRIMARY?KEY?(no);

本文來(lái)自php中文網(wǎng)mysql教程頻道,歡迎學(xué)習(xí)!

以上就是

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊15 分享