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

mysql去除重復(fù)數(shù)據(jù)只保留一條數(shù)據(jù)實例

 更新時間:2023年08月02日 11:28:50   作者:電風扇頭發(fā)  
這篇文章主要給大家介紹了關(guān)于mysql去除重復(fù)數(shù)據(jù)只保留一條數(shù)據(jù)的相關(guān)資料,在使用MySQL時,有時需要查詢出某個字段不重復(fù)的記錄,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下

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

前期準備:建表插入數(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, '國王', '總統(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, '亞當斯', '店員', 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;

表格來自oracle自帶emp表。

1、通過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ù)實際情況需求添加。

結(jié)果如下:

2、通過每個分組中的最小id來去重

2.1、添加主鍵id列

由于表格沒有主鍵列,所以需要新增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、首先找出每個分組中count(1) >1的數(shù)據(jù)中的最小id【min(id)】,sql語句如下:

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

結(jié)果如下:

2.2.2、再將上表和emp表做表連接,sql語句如下:

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é)果如下:

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

需要用到MySQL DELETE語句使用INNER JOIN子句,語法如下:

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

完整去重sql語句如下:

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;

總結(jié)

到此這篇關(guān)于mysql去除重復(fù)數(shù)據(jù)只保留一條數(shù)據(jù)的文章就介紹到這了,更多相關(guān)mysql去除重復(fù)數(shù)據(jù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 如何更改MySQL數(shù)據(jù)庫的編碼為utf8mb4

    如何更改MySQL數(shù)據(jù)庫的編碼為utf8mb4

    utf8mb4編碼是utf8編碼的超集,兼容utf8,并且能存儲4字節(jié)的表情字符。 這篇文章給大家介紹了更改MySQL數(shù)據(jù)庫的編碼為utf8mb4的相關(guān)知識,感興趣的朋友一起看看吧
    2020-02-02
  • MySQL中between and的基本用法詳解

    MySQL中between and的基本用法詳解

    文章介紹了MySQL中的BETWEEN AND操作符,它可以用于數(shù)值和日期類型的字段,包括邊界值,通過示例展示了如何使用BETWEEN AND進行數(shù)值查詢和時間查詢,并強調(diào)了在處理datetime和timestamp類型時需要注意時間精度問題,需要的朋友可以參考下
    2026-03-03
  • mysql中find_in_set()函數(shù)用法及自定義增強函數(shù)詳解

    mysql中find_in_set()函數(shù)用法及自定義增強函數(shù)詳解

    這篇文章主要給大家介紹了關(guān)于mysql中find_in_set()函數(shù)用法及自定義增強函數(shù)的相關(guān)資料,在MySQL 數(shù)據(jù)庫中進行復(fù)雜的查詢語句,例如對多個字段進行篩選和排序,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-06-06
  • 詳解Navicat遠程連接mysql很慢

    詳解Navicat遠程連接mysql很慢

    這篇文章主要介紹了詳解Navicat遠程連接mysql很慢(以及數(shù)據(jù)庫連接報錯"Too many connections")解決方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • MySQL復(fù)合查詢(多表查詢、子查詢)的實現(xiàn)

    MySQL復(fù)合查詢(多表查詢、子查詢)的實現(xiàn)

    MySQL復(fù)合查詢是指在一個SQL語句中使用多個查詢條件,以過濾和檢索數(shù)據(jù),本文主要介紹了MySQL復(fù)合查詢(多表查詢、子查詢)的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2023-12-12
  • MySQL8.0的WITH查詢詳情

    MySQL8.0的WITH查詢詳情

    這篇文章主要介紹了MySQL的WITH查詢詳情,需要的下伙伴可以參考下文
    2021-08-08
  • MySQL之MyISAM存儲引擎的非聚簇索引詳解

    MySQL之MyISAM存儲引擎的非聚簇索引詳解

    這篇文章主要為大家詳細介紹了MySQL之MyISAM存儲引擎的非聚簇索引,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • Mac安裝 mysql 數(shù)據(jù)庫總結(jié)

    Mac安裝 mysql 數(shù)據(jù)庫總結(jié)

    本文給大家分享的是如何在Mac下安裝mysql數(shù)據(jù)庫的方法,總結(jié)的很全面,有需要的小伙伴可以參考下
    2016-04-04
  • mysql數(shù)據(jù)庫sql優(yōu)化原則(經(jīng)驗總結(jié))

    mysql數(shù)據(jù)庫sql優(yōu)化原則(經(jīng)驗總結(jié))

    這里的原則 只是針對mysql數(shù)據(jù)庫,其他的數(shù)據(jù)庫 某些是殊途同歸,某些還是存在差異。我總結(jié)的也是mysql普遍的規(guī)則,對于某些特殊情況得特殊對待。在構(gòu)造sql語句的時候養(yǎng)成良好的習慣
    2014-03-03
  • mysql 重要日志文件匯總

    mysql 重要日志文件匯總

    這篇文章主要介紹了mysql 重要日志文件的匯總,幫助大家更好的理解和使用MySQL數(shù)據(jù)庫,感興趣的朋友可以了解下
    2020-11-11

最新評論

凌源市| 娱乐| 漯河市| 南和县| 海阳市| 花莲市| 张家口市| 师宗县| 黄浦区| 克东县| 兴和县| 芒康县| 安龙县| 东明县| 巴彦县| 莆田市| 佛坪县| 萍乡市| 板桥市| 神木县| 沈阳市| 马龙县| 青海省| 鹿邑县| 乌苏市| 呼图壁县| 内丘县| 武平县| 建德市| 黑龙江省| 灌阳县| 和平县| 天水市| 江华| 双辽市| 大悟县| 泰州市| 威信县| 四子王旗| 黄山市| 六枝特区|