91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL數據庫中怎么處理重復的數據

發布時間:2021-07-26 10:47:48 來源:億速云 閱讀:175 作者:Leah 欄目:數據庫

這篇文章將為大家詳細講解有關MySQL數據庫中怎么處理重復的數據,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

方法一:防止出現重復數據

也就是說我們再設計表的時候,就應該對這些數據設置一個UNIQUE  索引,在插入的時候就可以保證其唯一性,也就不存在有重復的數據了。當然你也可以直接設置為PRIMARY  KEY(主鍵)。效果也是一樣的。我們看一個案例:下表中無索引及主鍵,所以該表允許出現多條重復記錄。

CREATE TABLE student (     first_name CHAR(20),     last_name CHAR(20),     sex CHAR(10) );

目前first_name,last_name是可以重復的,如果不想重復這里有兩個解決辦法:

1、設置雙主鍵模式

CREATE TABLE student (    first_name CHAR(20) NOT NULL,    last_name CHAR(20) NOT NULL,    sex CHAR(10),    PRIMARY KEY (last_name, first_name) );

現在就無法插入重復數據了。

2、添加unique索引

CREATE TABLE student (    first_name CHAR(20) NOT NULL,    last_name CHAR(20) NOT NULL,    sex CHAR(10)    UNIQUE (last_name, first_name) );

這兩種看起來形式好像有一點區別,但是能起到相同的作用。此時我們可以插入兩條重復的數據,會發現報錯。當然我們還可以在數據庫中去驗證一下:

SELECT COUNT(*) as repetitions, last_name, first_name        FROM student        GROUP BY last_name, first_name        HAVING repetitions > 1;

在這里我們統計的是 first_name 和 last_name的重復記錄數,上面已經用兩種方法設置了,這里肯定就是0了。

方法二:在插入時指定能否插入重復數據

在這里我們使用的是Insert ignore into 與Insert into指令。

(1)Insert ignore  into會忽略數據庫中已經存在的數據,如果數據庫沒有數據,就插入新的數據,如果有數據的話就跳過這條數據。這樣就可以保留數據庫中已經存在數據,達到在間隙中插入數據的目的。

(2)Insert into則直接相反,會直接插入數據,不管數據庫里面是否含有重復數據。

我們還是舉例說明:

insert ignore into student (last_name, first_name) values ( '張三', '李四'); //結果 Query OK, 1 rows affected (0.00 sec) insert ignore into student (last_name, first_name) values ( '張三', '李四'); //結果 Query OK, 0 rows affected (0.00 sec)

現在我們看出來了吧,也就是說在執行第一條插入操作的時候,看到數據庫沒有,則直接插入一條新紀錄,因此一行記錄受到影響,但是在第二次插入的時候,數據庫已經有一條一樣的了,因此便不會插入了,0行受到影響。

當然了還有一個指令也可以完成類似于insert ignore into相似的功能,那就是replace into。他表示的是如果存在primary 或  unique相同的記錄,則先刪除掉。再插入新記錄。

方法三:過濾重復數據

如果你需要讀取不重復的數據可以在 SELECT 語句中使用 DISTINCT 關鍵字來過濾重復數據。

SELECT DISTINCT last_name, first_name FROM student ORDER BY last_name; 你也可以使用 GROUP BY 來讀取數據表中不重復的數據: SELECT last_name, first_name FROM student GROUP BY (last_name, first_name);

方法四:刪除重復數據

這種情況其實就相當于,在水的終點處去解決。看下面sql語句:

//根據student創建一個臨時表,并使用group by過濾了重復數據

//根據student創建一個臨時表,并使用group by過濾了重復數據  CREATE TABLE tmp SELECT last_name, first_name, sex         FROM student;         GROUP BY (last_name, first_name); //刪除原student表 DROP TABLE student; //給這個臨時表重新命名 ALTER TABLE tmp RENAME TO stu;

當然你也可以在數據表中添加 INDEX(索引) 和 PRIMAY KEY(主鍵)這種簡單的方法來刪除表中的重復記錄。方法如下:

ALTER IGNORE TABLE student ADD PRIMARY KEY (last_name, first_name);

關于MySQL數據庫中怎么處理重復的數據就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

精河县| 岑溪市| 邓州市| 衡东县| 囊谦县| 泊头市| 蒙山县| 绵竹市| 安陆市| 夏津县| 桂林市| 凉城县| 富锦市| 疏附县| 武冈市| 镇沅| 华容县| 曲周县| 自治县| 沾化县| 炉霍县| 长子县| 沁阳市| 阳朔县| 松桃| 旌德县| 遂川县| 阳春市| 仲巴县| 北流市| 化州市| 德州市| 县级市| 灵武市| 镇远县| 凤凰县| 高要市| 通河县| 昌都县| 德保县| 邢台县|