最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

刪除MySQL表中重復數(shù)據(jù)詳解

 更新時間:2023年06月15日 17:07:24   作者:我是一顆小虎牙_  
這篇文章主要為大家介紹了刪除MySQL表中重復數(shù)據(jù)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

前言

一般我們將數(shù)據(jù)存儲在MySQL數(shù)據(jù)庫中,它允許我們存儲重復的數(shù)據(jù)。但是往往重復的數(shù)據(jù)是作廢的、沒有用的數(shù)據(jù),那么通常我們會使用數(shù)據(jù)庫的唯一索引 unique 鍵作為限制。問題來了啊,我還沒有創(chuàng)建唯一索引捏,數(shù)據(jù)就重復了(我就是忘了,怎么滴)。

那么如何在一個普通的數(shù)據(jù)庫表中刪除重復的數(shù)據(jù)呢?

那我用一個例子演示一下如何操作。。。

示例

創(chuàng)建示例數(shù)據(jù)表

CREATE TABLE `flow_card_renewal_comparing` (
  `id` bigint(11) NOT NULL AUTO_INCREMENT COMMENT '主鍵id',
  `iccId` varchar(32) DEFAULT NULL COMMENT 'ICCID',
  `expireDate` date DEFAULT NULL COMMENT '到期日期',
  `result` int(5) DEFAULT NULL COMMENT '對比結(jié)果',
  `createTime` datetime DEFAULT NULL COMMENT '創(chuàng)建時間',
  `createBy` varchar(15) DEFAULT NULL COMMENT '創(chuàng)建人',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='對比結(jié)果'

創(chuàng)建示例數(shù)據(jù)

INSERT INTO flow_card_renewal_comparing(iccId, expireDate, `result`, createTime, createBy) VALUES 
('TEST0000111100001330', '2023-02-14', 1, '2023-02-14 15:14:38', NULL), 
('TEST0000111100001330', '2023-02-14', 1, '2023-02-14 15:14:38', NULL), 
('TEST0000111100001330', '2023-02-14', 1, '2023-02-14 15:14:38', NULL), 
('TEST0000111100001334', '2023-02-14', 3, '2023-02-14 15:14:38', NULL), 
('TEST0000111100001335', '2023-02-14', 3, '2023-02-14 15:14:38', NULL), 
('TEST0000111100001335', '2023-02-14', 3, '2023-02-14 15:14:38', NULL), 
('TEST0000111100001335', '2023-02-14', 3, '2023-02-14 15:14:38', NULL), 
('TEST0000111100001335', '2023-02-14', 3, '2023-02-14 15:14:38', NULL), 
('TEST0000111100001340', '2023-02-14', 3, '2023-02-14 15:14:38', NULL), 
('TEST0000111100001341', '2023-02-14', 3, '2023-02-14 15:14:38', NULL), 
('TEST0000111100001342', '2023-02-14', 3, '2023-02-14 15:14:38', NULL), 
('TEST0000111100001343', '2023-02-14', 3, '2023-02-14 15:14:38', NULL), 
('TEST0000111100001343', '2023-02-14', 3, '2023-02-14 15:14:38', NULL), 
('TEST0000111100001343', '2023-02-14', 2, '2023-02-14 15:14:38', NULL), 
('TEST0000111100001343', '2023-02-14', 2, '2023-02-14 15:14:38', NULL), 
('TEST0000111100001343', '2023-02-14', 2, '2023-02-14 15:14:38', NULL); 

創(chuàng)建數(shù)據(jù)如圖

數(shù)據(jù)

現(xiàn)在,我們要根據(jù)主鍵 iccId 去重重復的數(shù)據(jù),思路:

  • 篩選出有重復的業(yè)務(wù)主鍵 iccId
  • 查詢出 1. 中最小的自增主鍵 id
  • 令要刪除的數(shù)據(jù) iccId 控制在 1. 和 不等于 2.中
  • 同時刪除空的業(yè)務(wù)主鍵數(shù)據(jù)

那么便有以下幾個查詢:

/*1、查詢表中有重復數(shù)據(jù)的主鍵*/
select rd2.iccId from flow_card_renewal_comparing rd2 GROUP by rd2.iccId having count(rd2.iccId)>1
/*2、查詢重復iccid中最小的id號*/
select min(id) from flow_card_renewal_comparing rd2 group by rd2.iccid having count(rd2.iccid)>1
/*3、要刪除的重復數(shù)據(jù)*/
select
    *
from
    flow_card_renewal_comparing
where
    /*條件為不等于最小id的數(shù)據(jù)全刪除*/
    id not in ( 
        select min(id) from flow_card_renewal_comparing rd2 group by rd2.iccid having count(rd2.iccid)>1 
    )
    and iccId in (
    /*查詢有重復的iccid*/
        select rd2.iccId from flow_card_renewal_comparing rd2 GROUP by rd2.iccId having count(rd2.iccId)>1 
    )
/*4、再刪除為空的數(shù)據(jù)*/
select
    *
from
    flow_card_renewal_comparing
where
    /*條件為不等于最小id的數(shù)據(jù)全刪除*/
    id not in ( 
        select min(id) from flow_card_renewal_comparing rd2 group by rd2.iccid having count(rd2.iccid)>1 
    )
    and iccId in (
    /*查詢有重復的iccid*/
        select rd2.iccId from flow_card_renewal_comparing rd2 GROUP by rd2.iccId having count(rd2.iccId)>1 
    )
    or iccId is null

注意一點是mysql做刪除的時候會提示不能用查詢的結(jié)果來做刪除操作,這個時候就需要將查詢的數(shù)據(jù)作為一個臨時表,起別名進行刪除啦。那么會變成這樣:

成品

delete
from
    flow_card_renewal_comparing
where
    /*條件為不等于最小id的數(shù)據(jù)全刪除*/
    id not in ( 
        select id from (select min(id) as id from flow_card_renewal_comparing group by iccid having count(iccid)>1) temp1
    )
    and iccId in (
    /*查詢有重復的iccid*/
        select iccId from (select iccId from flow_card_renewal_comparing GROUP by iccId having count(iccId)>1 ) as temp2
    )
    or iccId is null

尾言

然后在這里再給數(shù)據(jù)庫的主鍵設(shè)置唯一索引啦!

以上就是刪除MySQL表中重復數(shù)據(jù)詳解的詳細內(nèi)容,更多關(guān)于刪除MySQL表重復數(shù)據(jù)的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Mysql的root賬戶密碼忘記了怎么解決(百分百教會你重置!)

    Mysql的root賬戶密碼忘記了怎么解決(百分百教會你重置!)

    mysql是常用的數(shù)據(jù)庫,很多程序員在使用的過程中會出現(xiàn)root用戶密碼忘記的事情,這篇文章主要給大家介紹了關(guān)于Mysql的root賬戶密碼忘記了該怎么解決的相關(guān)資料,文中介紹的方法百分百教會你如何重置,需要的朋友可以參考下
    2024-05-05
  • MySQL存儲引擎InnoDB架構(gòu)原理和執(zhí)行流程

    MySQL存儲引擎InnoDB架構(gòu)原理和執(zhí)行流程

    InnoDB是MySQL的當前默認存儲引擎,支持外鍵、行級鎖定和ACID事務(wù),通過BufferPool緩沖池緩存數(shù)據(jù),RedoLogBuffer和undo日志文件保證數(shù)據(jù)的持久性和回滾能力,MySQL宕機重啟時,InnoDB會根據(jù)LSN值決定是否需要從redo日志恢復數(shù)據(jù)
    2025-04-04
  • MySQL數(shù)據(jù)庫INNODB表損壞修復處理過程分享

    MySQL數(shù)據(jù)庫INNODB表損壞修復處理過程分享

    突然收到MySQL報警,從庫的數(shù)據(jù)庫掛了,一直在不停的重啟,打開錯誤日志,發(fā)現(xiàn)有張表壞了。innodb表損壞不能通過repair table 等修復myisam的命令操作。現(xiàn)在記錄下解決過程
    2013-08-08
  • MySQL通配符與正則表達式搜過濾數(shù)據(jù)詳解

    MySQL通配符與正則表達式搜過濾數(shù)據(jù)詳解

    簡單來說,正則表達式就是用來匹配文本的特殊字符串,下面這篇文章主要給大家介紹了關(guān)于MySQL通配符與正則表達式搜過濾數(shù)據(jù)的相關(guān)資料,文中通過實例代碼以及圖文介紹的非常詳細,需要的朋友可以參考下
    2022-09-09
  • mysql批量更新多條記錄的同一個字段為不同值的方法

    mysql批量更新多條記錄的同一個字段為不同值的方法

    最近在工作的時候突然想到了一個問題,就是mysql如何才能實現(xiàn)批量更新多條記錄的同一個字段為不同值,于是就動手實踐起來了,發(fā)現(xiàn)其中的學問還是挺多的,所以想著就總結(jié)下來分享給大家,有需要的朋友們可以參考借鑒,下面來一起看看吧。
    2016-12-12
  • mysql8報錯:ERROR?1410?(42000):?You?are?not?allowed?to?create?a?user?with?GRANT解決辦法

    mysql8報錯:ERROR?1410?(42000):?You?are?not?allowed?to?

    電腦新裝的mysql,版本為8.0以上,分配權(quán)限時直接帶密碼和賬號會報錯,這篇文章主要給大家介紹了關(guān)于mysql8報錯:ERROR?1410?(42000):?You?are?not?allowed?to?create?a?user?with?GRANT的解決辦法,需要的朋友可以參考下
    2022-06-06
  • 解析MySQL中mysqldump工具的基本用法

    解析MySQL中mysqldump工具的基本用法

    本篇文章是對MySQL中mysqldump工具的基本用法進行了詳細的分析介紹,需要的朋友參考下
    2013-06-06
  • MySql中JOIN的用法示例詳解

    MySql中JOIN的用法示例詳解

    join顧名思義就是連接兩張表,大致分為內(nèi)連接,外連接,右連接,左連接,自然連接,今天通過本文給大家介紹MySql中JOIN的用法詳解,感興趣的朋友一起看看吧
    2022-03-03
  • MySQL如何實現(xiàn)事務(wù)的ACID

    MySQL如何實現(xiàn)事務(wù)的ACID

    這篇文章主要介紹了MySQL如何實現(xiàn)事務(wù)的四大特性,幫助大家更好的理解和學習MySQL數(shù)據(jù)庫,感興趣的朋友可以了解下
    2020-09-09
  • MySQL的核心查詢語句詳解

    MySQL的核心查詢語句詳解

    這篇文章主要介紹了MySQL的核心查詢語句詳解,MySQL是一個流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),可用于存儲、管理和檢索數(shù)據(jù)。它是一個獨立的數(shù)據(jù)庫服務(wù)器軟件,可安裝在計算機或服務(wù)器上,需要的朋友可以參考下
    2023-07-07

最新評論

明光市| 宜阳县| 衢州市| 溧阳市| 个旧市| 盐山县| 南召县| 宁远县| 中牟县| 内丘县| 榆中县| 彭泽县| 永川市| 栾川县| 沙湾县| 平昌县| 凤翔县| 桐城市| 潮安县| 长宁区| 邹城市| 定边县| 启东市| 四川省| 合肥市| 阿拉善盟| 潜江市| 万年县| 临武县| 平度市| 志丹县| 顺平县| 保康县| 江孜县| 象山县| 大埔县| 浦江县| 儋州市| 上饶县| 桃江县| 罗江县|