国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

mysql中去除重復(fù)數(shù)據(jù),只保留一條。

這篇具有很好參考價(jià)值的文章主要介紹了mysql中去除重復(fù)數(shù)據(jù),只保留一條。。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

? ? ? ? ? ? ? ? 梳理一下關(guān)于刪除重復(fù)記錄的邏輯

目錄

前期準(zhǔn)備:建表插入數(shù)據(jù)

1、通過(guò)group by?和count(1)>1找出有重復(fù)的數(shù)據(jù)

?2、通過(guò)每個(gè)分組中的最小id來(lái)去重

????????2.1、添加主鍵id列

????????2.2?去重

????????????????2.2.1、首先找出每個(gè)分組中count(1) >1的數(shù)據(jù)中的最小id【min(id)】,sql語(yǔ)句如下:

?????????????????2.2.2、再將上表和emp表做表連接,sql語(yǔ)句如下:


前期準(zhǔn)備:建表插入數(shù)據(jù)

-- 創(chuàng)建表格emp
DROP TABLE IF EXISTS `emp`;
CREATE TABLE `emp`  (
  `EMPNO` int(0) NULL DEFAULT NULL,
  `ENAME` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
  `JOB` varchar(9) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
  `MGR` int(0) NULL DEFAULT NULL,
  `HIREDATE` date NULL DEFAULT NULL,
  `SAL` int(0) NULL DEFAULT NULL,
  `COMM` int(0) NULL DEFAULT NULL,
  `DEPTNO` int(0) NULL DEFAULT NULL
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;

-- 插入數(shù)據(jù)
INSERT INTO `emp` VALUES (7566, '瓊斯1', '經(jīng)理', 7839, '1981-04-02', 2975, NULL, 20);
INSERT INTO `emp` VALUES (7654, '馬丁', '售貨員', 7698, '1981-09-28', 1250, 1400, 30);
INSERT INTO `emp` VALUES (7782, '克拉克', '經(jīng)理', 7839, '1981-06-09', 2450, NULL, 10);
INSERT INTO `emp` VALUES (7788, '斯科特', '分析師', 7566, '1987-04-19', 3000, NULL, 20);
INSERT INTO `emp` VALUES (7839, '國(guó)王', '總統(tǒng)', NULL, '1981-11-17', 5000, NULL, 10);
INSERT INTO `emp` VALUES (7844, '特納', '售貨員', 7698, '1981-09-08', 1500, 0, 30);
INSERT INTO `emp` VALUES (7876, '亞當(dāng)斯', '店員', 7788, '1987-05-23', 1100, NULL, 20);
INSERT INTO `emp` VALUES (7900, '詹姆斯', '店員', 7698, '1981-12-03', 950, NULL, 30);
INSERT INTO `emp` VALUES (7902, '福特', '分析師', 7566, '1981-12-03', 3000, NULL, 20);
INSERT INTO `emp` VALUES (7521, '沃德', '售貨員', 7698, '1981-02-22', 1250, 500, 30);
INSERT INTO `emp` VALUES (7934, '米勒', '店員', 7782, '1982-01-23', 1300, NULL, 10);
INSERT INTO `emp` VALUES (7499, '艾倫', '售貨員', 7698, '1981-02-20', 1600, 300, 30);
INSERT INTO `emp` VALUES (7698, '布萊克', '經(jīng)理', 7839, '1981-05-01', 2850, NULL, 30);
INSERT INTO `emp` VALUES (7566, '瓊斯', '經(jīng)理', 7839, '1981-04-02', 2975, NULL, 20);

SET FOREIGN_KEY_CHECKS = 1;

表格來(lái)自oracle自帶emp表。

1、通過(guò)group by?和count(1)>1找出有重復(fù)的數(shù)據(jù)

SELECT  ename,count(1) FROM emp GROUP BY ename HAVING count(1) >1;

在group by?之后?count(1)> 1代表其分組數(shù)據(jù)是重復(fù)的。

?具體group by?字段根據(jù)實(shí)際情況需求添加。

結(jié)果如下:

mysql中去除重復(fù)數(shù)據(jù),只保留一條。

?2、通過(guò)每個(gè)分組中的最小id來(lái)去重

????????2.1、添加主鍵id列

由于表格沒(méi)有主鍵列,所以需要新增id自增。

	ALTER TABLE emp add id int first; -- 改變表結(jié)構(gòu),增加名為id的列
	ALTER table emp MODIFY id int PRIMARY key auto_increment; -- 將id字段設(shè)置為主鍵自增;

????????2.2?去重

??????????2.2.1、首先找出每個(gè)分組中count(1) >1的數(shù)據(jù)中的最小id【min(id)】,sql語(yǔ)句如下:

SELECT min(id) id,ename,count(0) FROM emp GROUP BY ename HAVING count(1) >1;

結(jié)果如下:

mysql中去除重復(fù)數(shù)據(jù),只保留一條。

??????????2.2.2、再將上表和emp表做表連接,sql語(yǔ)句如下:

		SELECT t1.*,t2.* from
		emp t1
		inner join (SELECT min(id) id,ename,count(0) FROM emp GROUP BY ename HAVING count(1) >1) t2
		on t1.ENAME = t2.ENAME;

結(jié)果如下:

mysql中去除重復(fù)數(shù)據(jù),只保留一條。

?????????可以看出t1.id和t2.id之間的聯(lián)系,我們只需要?jiǎng)h除t1.id >?t2.id的數(shù)據(jù),只留下每組中id最小的值和count(1)= 1?的數(shù)據(jù)。

????????需要用到MySQL DELETE語(yǔ)句使用INNER JOIN子句,語(yǔ)法如下:

DELETE  a FROM table1 AS a LEFT JOIN table2 AS b ON 連接條件 WHERE 過(guò)濾條件;

????????完整去重sql語(yǔ)句如下:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-482815.html

DELETE t1 from
		emp t1
inner join (SELECT min(id) id,ename,count(0) FROM emp GROUP BY ename HAVING count(1) >1) t2
		on t1.ENAME = t2.ENAME
where t1.id > t2.id;

到了這里,關(guān)于mysql中去除重復(fù)數(shù)據(jù),只保留一條。的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • SqlServer中根據(jù)某幾列獲取重復(fù)的數(shù)據(jù)將其刪除并保留最新一條

    SqlServer中根據(jù)某幾列獲取重復(fù)的數(shù)據(jù)將其刪除并保留最新一條

    有時(shí)候,我們某個(gè)數(shù)據(jù)表中,可能有幾列的數(shù)據(jù)都是一樣的,此時(shí)我們可能想查詢出這幾列數(shù)據(jù)相同的所有數(shù)據(jù)行,并保留最新一條,將其他重復(fù)的數(shù)據(jù)刪除。 假設(shè)我們有如下數(shù)據(jù)表: 此時(shí)我們可以使用 ROW_NUMBER 函數(shù),根據(jù)某幾列查詢出重復(fù)數(shù)據(jù)的新的排序列,該排序列就

    2024年04月28日
    瀏覽(27)
  • MySQL大量臟數(shù)據(jù),如何只保留最新的一條?

    MySQL大量臟數(shù)據(jù),如何只保留最新的一條?

    因?yàn)橄到y(tǒng)的一個(gè)Bug,導(dǎo)致數(shù)據(jù)庫(kù)表中出現(xiàn)重復(fù)數(shù)據(jù),需要做的是刪除重復(fù)數(shù)據(jù)且只保留最新的一條數(shù)據(jù)。 具體場(chǎng)景是這樣的 當(dāng)然有人會(huì)說(shuō)上面的問(wèn)題我們可以建一個(gè) order_no + cost_id 的組合唯一索引,這樣就算代碼有bug但至少數(shù)據(jù)庫(kù)表中不會(huì)有臟數(shù)據(jù)。 似乎這樣就可以了,然

    2023年04月20日
    瀏覽(22)
  • SQL語(yǔ)句刪除重復(fù)記錄且只保留一條有效記錄

    1. 查找表中多余的重復(fù)記錄,重復(fù)記錄是根據(jù)單個(gè)字段(name)來(lái)判斷 2. 刪除表中多余的重復(fù)記錄,重復(fù)記錄是根據(jù)單個(gè)字段(id)來(lái)判斷,只留有id最小的記錄 3. 刪除表中多余的重復(fù)記錄(多個(gè)字段),只留有id最小的記錄 參考:https://blog.csdn.net/JineD/article/details/126875291

    2024年02月13日
    瀏覽(22)
  • SQL刪除重復(fù)的記錄(只保留一條)-窗口函數(shù)row_number()

    SQL刪除重復(fù)的記錄(只保留一條)-窗口函數(shù)row_number()

    關(guān)于刪除mysql表中重復(fù)數(shù)據(jù)問(wèn)題,本文中給到兩種辦法:聚合函數(shù)、窗口函數(shù)row_number()的方法。 (注意:MySQL從8.0開(kāi)始支持窗口函數(shù)) 測(cè)試數(shù)據(jù)準(zhǔn)備:首先創(chuàng)建一個(gè)測(cè)試表test,插入一些測(cè)試數(shù)據(jù),模擬一些重復(fù)數(shù)據(jù)(最終目標(biāo):刪除重復(fù)數(shù)據(jù),但不處理null行) 先查詢下重復(fù)數(shù)

    2024年02月05日
    瀏覽(30)
  • MySQL去除數(shù)據(jù)庫(kù)重復(fù)記錄

    要從MySQL數(shù)據(jù)庫(kù)中刪除重復(fù)的記錄,您可以使用 DELETE 語(yǔ)句結(jié)合 GROUP BY 和 HAVING 子句來(lái)實(shí)現(xiàn)。以下是一個(gè)示例: 在上述示例中,您需要將 your_table 替換為您的表名,并將 column1, column2, ... 替換為用于判斷重復(fù)的列名。這個(gè)查詢將刪除所有重復(fù)的記錄,只保留每組重復(fù)記錄中的一

    2024年02月11日
    瀏覽(71)
  • 解決MySQL中分頁(yè)查詢時(shí)多頁(yè)有重復(fù)數(shù)據(jù),實(shí)際只有一條數(shù)據(jù)的問(wèn)題

    解決MySQL中分頁(yè)查詢時(shí)多頁(yè)有重復(fù)數(shù)據(jù),實(shí)際只有一條數(shù)據(jù)的問(wèn)題

    有一個(gè)離奇的BUG,在查詢時(shí),第一頁(yè)跟第二頁(yè)有一個(gè)共同的數(shù)據(jù)。有的數(shù)據(jù)卻不顯示。 后來(lái)發(fā)現(xiàn)是在SQL排序時(shí)沒(méi)用主鍵排序。 解決:使用主鍵排序 以下是我準(zhǔn)備的舉例,可以自己試試。 分頁(yè)查詢公式:分頁(yè)查詢–他的公式為(偽代碼): [NOT] LIMIT (curPage-1)*pageSize,pageSize 執(zhí)行

    2024年02月16日
    瀏覽(16)
  • mysql -- 左連接一對(duì)多只取一條,去重重復(fù)字段

    ? ? ? ? 例如,給你一張用戶表,還有一張地區(qū)信息表(每條數(shù)據(jù)都是到省 - 市 - 縣 的地區(qū)信息,具體到縣區(qū)),用戶表中有用戶所在市區(qū)字段,你要根據(jù) 地區(qū)信息表 查用戶的所在市區(qū)的市區(qū)編碼。就會(huì)出現(xiàn)一個(gè)情況,用戶表 左連接 地區(qū)信息表? 根據(jù)市區(qū)信息去匹配,一

    2024年02月16日
    瀏覽(21)
  • # java合并兩個(gè)list 并去重,指定保留其中一個(gè)list的重復(fù)數(shù)據(jù)

    在Java中,有多種方法可以合并兩個(gè)List并去重,指定保留其中一個(gè)List的重復(fù)數(shù)據(jù)。下面介紹幾種常見(jiàn)的方法,并附上代碼示例。 該方法首先將一個(gè)List的所有元素加入到目標(biāo)List中,然后遍歷另一個(gè)List,如果目標(biāo)List中不包含該元素,則將該元素加入到目標(biāo)List中。最后得到的就

    2024年02月02日
    瀏覽(102)
  • vue中v-for重復(fù)數(shù)據(jù)處理||element下拉框去除重復(fù)

    vue中v-for重復(fù)數(shù)據(jù)處理||element下拉框去除重復(fù)

    前端去重方法有多種,只說(shuō)三種常用的(新老方法都有) 1-使用常規(guī)雙for循環(huán)(暴力算法)遍歷比較的方式對(duì)值進(jìn)行比較 2-使用js方法sort排序(只針對(duì)數(shù)組),但是經(jīng)常在vue等新框架中提示TypeError: arr.sort is not a function 3-使用reduce方法(_)推薦 前端js各種操作合集備忘 點(diǎn)擊路線后后面車(chē)

    2024年02月11日
    瀏覽(28)
  • MySQL--最基本的SELECT...FROM語(yǔ)句,列的別名,去除重復(fù)行,空值參與運(yùn)算,著重號(hào),運(yùn)算符,顯示表的結(jié)構(gòu),過(guò)濾數(shù)據(jù),顯示表的結(jié)構(gòu),邏輯運(yùn)算符, LIKE運(yùn)算符,REGEXP運(yùn)算符

    MySQL--最基本的SELECT...FROM語(yǔ)句,列的別名,去除重復(fù)行,空值參與運(yùn)算,著重號(hào),運(yùn)算符,顯示表的結(jié)構(gòu),過(guò)濾數(shù)據(jù),顯示表的結(jié)構(gòu),邏輯運(yùn)算符, LIKE運(yùn)算符,REGEXP運(yùn)算符

    方式一 source 文件的全路徑名`countries` 方式二 基于具體的圖形化界面的工具可以導(dǎo)入數(shù)據(jù) 比如:選擇 “工具” --- “執(zhí)行sql 腳本” --選中xxx.sql即可 1.1.最基本的語(yǔ)句select 字段1,字段2 ,.............from 表名 用DUAL維持整個(gè)結(jié)構(gòu)的平衡 1.2.表中所有等等字段(或列) 其中,不同

    2024年02月04日
    瀏覽(28)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包