刪除mysql數據庫的重複記錄,mysql查詢結果去除重複記錄

本文目錄一覽:

mysql 怎麼刪除重複的數據

假設表結構為

t1(a,b)

刪除a列有重複的記錄

delete from t1,(select a from t1 group by a having count(1)1) t where t1.a=t.a;

如果希望對於有重複的記錄只保留其中一條而不是全部刪除,則可運行下列語句,前提是數據表必須含有自增id列。語句如下:

delete from t1,(select a,max(id) as id from t1 group by a having count(1)1) t where t1.a=t.a and t1.idt.id;

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 |

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

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

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/275603.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-17 16:05
下一篇 2024-12-17 16:05

相關推薦

  • 如何修改mysql的端口號

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

    編程 2025-04-29
  • Python 常用數據庫有哪些?

    在Python編程中,數據庫是不可或缺的一部分。隨着互聯網應用的不斷擴大,處理海量數據已成為一種趨勢。Python有許多成熟的數據庫管理系統,接下來我們將從多個方面介紹Python…

    編程 2025-04-29
  • openeuler安裝數據庫方案

    本文將介紹在openeuler操作系統中安裝數據庫的方案,並提供代碼示例。 一、安裝MariaDB 下面介紹如何在openeuler中安裝MariaDB。 1、更新軟件源 sudo…

    編程 2025-04-29
  • Python操作MySQL

    本文將從以下幾個方面對Python操作MySQL進行詳細闡述: 一、連接MySQL數據庫 在使用Python操作MySQL之前,我們需要先連接MySQL數據庫。在Python中,我…

    編程 2025-04-29
  • 使用SQL實現select 聚合查詢結果前加序號

    select語句是數據庫中最基礎的命令之一,用於從一個或多個表中檢索數據。常見的聚合函數有:count、sum、avg等。有時候我們需要在查詢結果的前面加上序號,可以使用以下兩種方…

    編程 2025-04-29
  • 數據庫第三範式會有刪除插入異常

    如果沒有正確設計數據庫,第三範式可能導致刪除和插入異常。以下是詳細解釋: 一、什麼是第三範式和範式理論? 範式理論是關係數據庫中的一個規範化過程。第三範式是範式理論中的一種常見形式…

    編程 2025-04-29
  • MySQL遞歸函數的用法

    本文將從多個方面對MySQL遞歸函數的用法做詳細的闡述,包括函數的定義、使用方法、示例及注意事項。 一、遞歸函數的定義 遞歸函數是指在函數內部調用自身的函數。MySQL提供了CRE…

    編程 2025-04-29
  • leveldb和unqlite:兩個高性能的數據庫存儲引擎

    本文將介紹兩款高性能的數據庫存儲引擎:leveldb和unqlite,並從多個方面對它們進行詳細的闡述。 一、leveldb:輕量級的鍵值存儲引擎 1、leveldb概述: lev…

    編程 2025-04-28
  • MySQL bigint與long的區別

    本文將從數據類型定義、存儲空間、數據範圍、計算效率、應用場景五個方面詳細闡述MySQL bigint與long的區別。 一、數據類型定義 bigint在MySQL中是一種有符號的整…

    編程 2025-04-28
  • Python怎麼導入數據庫

    Python是一種高級編程語言。它具有簡單、易讀的語法和廣泛的庫,讓它成為一個靈活和強大的工具。Python的數據庫連接類型可以多種多樣,其中包括MySQL、Oracle、Post…

    編程 2025-04-28

發表回復

登錄後才能評論