mysql分不想去除重複數據怎麼辦,mysql怎麼過濾重複數據

本文目錄一覽:

mysql怎麼去除重複數據

MySQL 刪除重複數據

有些 MySQL 數據表中可能存在重複的記錄,有些情況我們允許重複數據的存在,但有時候我們也需要刪除這些重複的數據。

本章節我們將為大家介紹如何防止數據表出現重複數據及如何刪除數據表中的重複數據。

刪除重複數據

如果你想刪除數據表中的重複數據,你可以使用以下的SQL語句:

from 樹懶學堂 – 一站式數據知識平台

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

mysql 現在表中出現重複數據,怎樣刪除重複數據

這個需要分情況。1,你的資料庫表中有主鍵,且主鍵上面的數據為唯一值。也就是沒有重複值。那麼你在刪除的時候,將這個唯一值作為條件進行刪除。如: delete from [表名] where id=12.所有的數據相同,那麼你只能打開數據表,手工選定其中某一條,進行刪除。

mysql 多個表重複的數據怎麼刪除

通常情況下,一個我們在做一個產品的時候,一開始可能由於設計考慮不周或者程序寫的不夠嚴謹,某個欄位上的值產生重複了,但是又必須去掉,這個時候就稍微麻煩了一點,直接加一個 UNIQUE KEY 肯定是不行了,因為會報錯。

現在,我們來採用一種變通的辦法,不過可能會丟失一些數據 :)

在這裡,我們設定一個表,其結構如下:

mysql desc `user`;

+——-+——————+——+—–+———+—————-+

| Field | Type | Null | Key | Default | Extra |

+——-+——————+——+—–+———+—————-+

| id | int(10) unsigned | NO | PRI | NULL | auto_increment |

| name | char(10) | NO | | | |

| extra | char(10) | NO | | | |

+——-+——————+——+—–+———+—————-+

原來表中的數據假定有以下幾條:

mysql SELECT * FROM `user`;

+—-+——-+——–+

| id | name | extra |

+—-+——-+——–+

| 1 | user1 | user1 |

| 2 | user2 | user2 |

| 3 | user3 | user3 |

| 4 | user4 | user4 |

| 5 | user5 | user5 |

| 6 | user3 | user6 |

| 7 | user6 | user7 |

| 8 | user2 | user8 |

| 9 | USER2 | user9 |

| 10 | USER6 | user10 |

+—-+——-+——–+

1、將原來的數據導出

mysqlSELECT * INTO OUTFILE ‘/tmp/user.txt’ FROM `user`;

2、清空數據表

mysqlTRUNCATE TABLE `user`;

3、創建唯一索引,並且修改 `name` 欄位的類型為 BINARY CHAR 區分大小寫

mysql ALTER TABLE `user` MODIFY `name` CHAR(10) BINARY NOT NULL DEFAULT ”;

mysql ALTER TABLE `user` ADD UNIQUE KEY ( `name` );

現在來看看新的表結構:

mysql desc user;

+——-+——————+——+—–+———+—————-+

| Field | Type | Null | Key | Default | Extra |

+——-+——————+——+—–+———+—————-+

| id | int(10) unsigned | NO | PRI | NULL | auto_increment |

| name | char(10) | NO | UNI | | |

| extra | char(10) | NO | | | |

+——-+——————+——+—–+———+—————-+

4、把數據導回去,在這裡,有兩種選擇:新的重複記錄替換舊的記錄,只保留最新的記錄 或者是 新的記錄略過,只保留最舊的記錄

mysql LOAD DATA INFILE ‘/tmp/user.txt’ REPLACE INTO TABLE `user`;

Query OK, 10 rows affected (0.00 sec)

Records: 8 Deleted: 2 Skipped: 0 Warnings: 0

mysql SELECT * FROM USER;

+—-+——-+——–+

| id | name | extra |

+—-+——-+——–+

| 1 | user1 | user1 |

| 8 | user2 | user8 |

| 6 | user3 | user6 |

| 4 | user4 | user4 |

| 5 | user5 | user5 |

| 7 | user6 | user7 |

| 9 | USER2 | user9 |

| 10 | USER6 | user10 |

+—-+——-+——–+

上面是採用 REPLACE 的方式,可以看到,導入過程中刪掉了兩條數據,結果驗證確實是 新的重複記錄替換舊的記錄,只保留最新的記錄。

現在,來看看用 IGNORE 的方式:

mysql LOAD DATA INFILE ‘/tmp/user.txt’ IGNORE INTO TABLE `user`;

Query OK, 6 rows affected (0.01 sec)

Records: 8 Deleted: 0 Skipped: 2 Warnings: 0

mysql SELECT * FROM USER;

+—-+——-+——–+

| id | name | extra |

+—-+——-+——–+

| 1 | user1 | user1 |

| 2 | user2 | user2 |

| 3 | user3 | user3 |

| 4 | user4 | user4 |

| 5 | user5 | user5 |

| 7 | user6 | user7 |

| 9 | USER2 | user9 |

| 10 | USER6 | user10 |

+—-+——-+——–+

看到了吧,確實是 新的記錄略過,只保留最舊的記錄。

mysql資料庫怎麼去除重複數據

delete from zhszty_ebook

where id not in(

select * from (select max(id) from zhszty_ebook group by url

) as tmp);————mysql有個特性,對於表進行修改,刪除操作,子查詢不能和外層的查詢的表一樣,所以在加個select就可以了。其他資料庫按照樓上的那個是沒問題的

怎麼刪除重複的Mysql數據?

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

第一步:從500萬數據表data_content_152里提取出不重複的欄位SFZHM對應的ID欄位到TMP3表

1 create table tmp3 as select min(id) as col1 from data_content_152 group by SFZHM;

第二步:創建新表RES

1234 CREATE TABLE `res` (`id` int(11),`sfz` char(20)) ENGINE=MyISAM;

第三步:把TMP3表ID對應到data_content_152里需要提取的數據添加到RES表的SFZ欄位

1 INSERT INTO res (sfz) SELECT sfzhm FROM data_content_152,tmp3 where data_content_152.id=tmp3.col1

至此,就在MYSQL里實現了,給數據表data_content_152完全刪除重複數據,把去重複後的數據導入到RES表。

mysql如何去除兩個欄位數據相同的記錄

方法有很多,這裡介紹兩種

方法一、

如果要保留id的最小值,例如:

數據:

執行sql:select count(*) as count ,name,id from ceshi group by name

amp;lt;img

最後要刪除的sql為:delete from ceshi where id not in (select count(*) as count ,name,id from ceshi group by name)

如果想保留id的最大值:

簡單的辦法是:delete from ceshi where id not in (select count(*) as count ,name,id from (select * from ceshi order by id desc) group by name)

如果想要刪除的是兩個列裡面對應相同的數據,也就是說表裡面有兩條記錄的name都是admin,要是只想保留其中一條的話,order by 的時候增加一個值即可,例如:

delete from ceshi where id not in (select count(*) as count ,name,id from ceshi group by name,email)

方法二、

只需要把你這張表當成兩張表來處理就行了。

DELETE p1 from TABLE p1, TABLE p2 WHERE p1.name = p2.name AND p1.email = p2.email AND p1.id p2.id;

這裡有個問題,保留最新的那一條(也就是ID最小的那個)

上面的的語句,p1.id p2.id,所以獲取到的是id最大的,因為p1.id小於p2.id就會被刪除,只有最大的值不滿足。如果要獲取id最小的那個,只需要把”改成”即可。

當然是用group by,count可以更精準控制重複n次的情況。

原創文章,作者:YDBSM,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/329520.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
YDBSM的頭像YDBSM
上一篇 2025-01-14 18:55
下一篇 2025-01-14 18:55

相關推薦

  • 如何修改mysql的埠號

    本文將介紹如何修改mysql的埠號,方便開發者根據實際需求配置對應埠號。 一、為什麼需要修改mysql埠號 默認情況下,mysql使用的埠號是3306。在某些情況下,我們需…

    編程 2025-04-29
  • Python讀取CSV數據畫散點圖

    本文將從以下方面詳細闡述Python讀取CSV文件並畫出散點圖的方法: 一、CSV文件介紹 CSV(Comma-Separated Values)即逗號分隔值,是一種存儲表格數據的…

    編程 2025-04-29
  • Python中讀入csv文件數據的方法用法介紹

    csv是一種常見的數據格式,通常用於存儲小型數據集。Python作為一種廣泛流行的編程語言,內置了許多操作csv文件的庫。本文將從多個方面詳細介紹Python讀入csv文件的方法。…

    編程 2025-04-29
  • 如何用Python統計列表中各數據的方差和標準差

    本文將從多個方面闡述如何使用Python統計列表中各數據的方差和標準差, 並給出詳細的代碼示例。 一、什麼是方差和標準差 方差是衡量數據變異程度的統計指標,它是每個數據值和該數據值…

    編程 2025-04-29
  • Python多線程讀取數據

    本文將詳細介紹多線程讀取數據在Python中的實現方法以及相關知識點。 一、線程和多線程 線程是操作系統調度的最小單位。單線程程序只有一個線程,按照程序從上到下的順序逐行執行。而多…

    編程 2025-04-29
  • Python兩張表數據匹配

    本篇文章將詳細闡述如何使用Python將兩張表格中的數據匹配。以下是具體的解決方法。 一、數據匹配的概念 在生活和工作中,我們常常需要對多組數據進行比對和匹配。在數據量較小的情況下…

    編程 2025-04-29
  • Python爬取公交數據

    本文將從以下幾個方面詳細闡述python爬取公交數據的方法: 一、準備工作 1、安裝相關庫 import requests from bs4 import BeautifulSou…

    編程 2025-04-29
  • Python數據標準差標準化

    本文將為大家詳細講述Python中的數據標準差標準化,以及涉及到的相關知識。 一、什麼是數據標準差標準化 數據標準差標準化是數據處理中的一種方法,通過對數據進行標準差標準化可以將不…

    編程 2025-04-29
  • 如何使用Python讀取CSV數據

    在數據分析、數據挖掘和機器學習等領域,CSV文件是一種非常常見的文件格式。Python作為一種廣泛使用的編程語言,也提供了方便易用的CSV讀取庫。本文將介紹如何使用Python讀取…

    編程 2025-04-29
  • Python如何打亂數據集

    本文將從多個方面詳細闡述Python打亂數據集的方法。 一、shuffle函數原理 shuffle函數是Python中的一個內置函數,主要作用是將一個可迭代對象的元素隨機排序。 在…

    編程 2025-04-29

發表回復

登錄後才能評論