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

SQL刪除重復(fù)數(shù)據(jù)的實(shí)例教程

 更新時(shí)間:2022年07月05日 11:04:30   作者:qq_37705525  
在使用SQL提數(shù)的時(shí)候,常會(huì)遇到表內(nèi)有重復(fù)值的時(shí)候,下面這篇文章主要給大家介紹了關(guān)于SQL刪除重復(fù)數(shù)據(jù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下

1 SQL去重

SQL中去除完全相同數(shù)據(jù)可以用distinct關(guān)鍵字,任意字段去重可以用group by,以下面的數(shù)據(jù)表為例。

2 distinct

存在兩條完全相同的紀(jì)錄,用關(guān)鍵字distinct就可以去掉

根據(jù)單個(gè)字段去重,能精確去重;

作用在多個(gè)字段時(shí),只有當(dāng)這幾個(gè)字段的完全相同時(shí),才能去重;

關(guān)鍵字distinct只能放在SQL語句中的第一個(gè),才會(huì)起作用

一般用來返回不重復(fù)的記錄條數(shù),返回不重復(fù)的條數(shù)(去掉test重復(fù)的,就剩下6條)

3 group by

1. 查詢根據(jù)名字去重后數(shù)據(jù)(名字相同取id值大的)

SELECT * FROM stu WHERE id IN (SELECT MAX(id) FROM stu GROUP BY `name`)

2. 刪除名字相同數(shù)據(jù)(名字相同保留id值大的)

group by + count + max去掉重復(fù)數(shù)據(jù)

1)SELECT * FROM stu

2)加上group by 后,會(huì)將重復(fù)的數(shù)據(jù)去掉了

3) 條件(名字)是數(shù)量大于1的重復(fù)數(shù)據(jù)

SELECT `name` FROM stu GROUP BY `name` HAVING COUNT(`name`) > 1

#條件是數(shù)量大于1的重復(fù)數(shù)據(jù)
SELECT * FROM stu WHERE `name` IN(
SELECT `name` FROM stu GROUP BY `name` HAVING COUNT(`name`)>1 
)

4)查看某字段重復(fù)數(shù)據(jù)的id

SELECT id, COUNT(*) FROM stu 
GROUP BY NAME DESC HAVING(COUNT(*) > 0)

5)查詢所有重復(fù)數(shù)據(jù)

SELECT * FROM stu WHERE NAME IN (SELECT `name` FROM stu GROUP BY `name` HAVING COUNT(`name`) > 1)

5) 去重

可以使用distinct去重(返回不重復(fù)的用戶名)

刪除多余的重復(fù)記錄(name),只保留id最大的記錄。

DELETE FROM stu 
WHERE id NOT IN ( SELECT a.id FROM ( SELECT MAX( id ) AS id FROM stu GROUP BY `name` )a )

或者

 DELETE FROM stu WHERE `name` IN (SELECT `name` FROM (SELECT `name` FROM stu GROUP BY `name` HAVING COUNT(`name`)>1) e)
 AND id NOT IN (SELECT id FROM (SELECT MAX(id) AS id FROM stu GROUP BY `name` HAVING COUNT(`name`)>1) t)
 #查詢顯示重復(fù)的數(shù)據(jù)都是顯示最前面的幾條,因此不需要查詢是否最小值

錯(cuò)誤刪除

DELETE FROM stu WHERE name IN (SELECT name FROM stu GROUP BY name HAVING COUNT(name)>1)
AND id NOT IN (SELECT MAX(id) FROM stu GROUP BY stu HAVING COUNT(name)>1)

原因是:不能將直接查處來的數(shù)據(jù)當(dāng)做刪除數(shù)據(jù)的條件,我們應(yīng)該先把查出來的數(shù)據(jù)新建一個(gè)臨時(shí)表,然后再把臨時(shí)表作為條件進(jìn)行刪除功能

4 總結(jié)

去重后名字記錄

SELECT `name` FROM stu 
GROUP BY NAME HAVING(COUNT(*) > 0)

2)

所有重復(fù)名字的記錄

SELECT `name` FROM stu 
GROUP BY NAME HAVING COUNT(*) > 1

3)把所有重復(fù)的記錄都刪了

DELETE FROM stu WHERE name IN
(SELECT name FROM stu GROUP BY name HAVING COUNT(*)>1)

無法在刪除時(shí)同時(shí)查詢這張表,這個(gè)問題只在MySQL中出現(xiàn),oracle沒有。怎么解決?我們只需要在查出結(jié)果以后加一張中間表。讓執(zhí)行器認(rèn)為我們要查的數(shù)據(jù)不是來自正在刪的這張表就可以了。

DELETE FROM stu WHERE `name` IN 
    (SELECT a.name FROM 
        (SELECT `name` FROM stu GROUP BY `name` HAVING COUNT(*)>1) a)

所有重復(fù)數(shù)據(jù)都刪除, 就剩王五一條數(shù)據(jù)了

4) 現(xiàn)在刪除所有重復(fù)數(shù)據(jù)數(shù)據(jù)做完了,考慮怎么保留重復(fù)數(shù)據(jù)中id最小的。只需要在刪除時(shí)讓刪除該條的記錄id不在重復(fù)數(shù)據(jù)id最小的當(dāng)中就可以了。

DELETE FROM stu WHERE `name` IN 
    (SELECT a.name FROM 
        (SELECT `name` FROM stu GROUP BY `name` HAVING COUNT(*)>1) a)
     AND id NOT IN 
    (SELECT b.id FROM 
        (SELECT MIN(id) id FROM stu 
            GROUP BY `name` HAVING COUNT(*)>1) b);

還有簡(jiǎn)單辦法 算出去重后所有數(shù)據(jù)(保留最小ID),然后刪除id不在該數(shù)組里的

 DELETE FROM stu WHERE id NOT IN (SELECT t.id FROM (SELECT MIN(id) AS id FROM stu GROUP BY `name`)t)

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

相關(guān)文章

  • MySQL 查詢速度慢的原因

    MySQL 查詢速度慢的原因

    高性能MySQL需要合理的設(shè)計(jì)查詢。如果查詢寫的很糟糕,即使表結(jié)構(gòu)再合理、索引再合適,也是無法實(shí)現(xiàn)高性能的。
    2021-05-05
  • 一文帶你玩轉(zhuǎn)MySQL獲取時(shí)間和格式轉(zhuǎn)換各類操作方法詳解

    一文帶你玩轉(zhuǎn)MySQL獲取時(shí)間和格式轉(zhuǎn)換各類操作方法詳解

    最近在開發(fā)中常常使用時(shí)間的轉(zhuǎn)換函數(shù),所以一直都想整理一下這些函數(shù),下面這篇文章主要給大家介紹了關(guān)于MySQL獲取時(shí)間和格式轉(zhuǎn)換各類操作方法的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08
  • 寶塔面板mysql無法啟動(dòng)問題的分析和解決

    寶塔面板mysql無法啟動(dòng)問題的分析和解決

    在使用寶塔linux面板一鍵安裝LNMP的是,數(shù)據(jù)庫(kù)mysql始終無法啟動(dòng),查查找找用了幾個(gè)小時(shí),問題終于解決了,下面這篇文章主要給大家介紹了關(guān)于寶塔面板mysql無法啟動(dòng)問題的分析和解決方法,需要的朋友可以參考下
    2023-04-04
  • MySQL中SQL分頁查詢的幾種實(shí)現(xiàn)方法及優(yōu)缺點(diǎn)

    MySQL中SQL分頁查詢的幾種實(shí)現(xiàn)方法及優(yōu)缺點(diǎn)

    這篇文章主要介紹了MySQL中SQL分頁查詢的幾種實(shí)現(xiàn)方法及優(yōu)缺點(diǎn), 分頁查詢就是在滿足條件的一堆有序數(shù)據(jù)中截取當(dāng)前所需要展示的那部分。對(duì)此感興趣的可以來了解一下
    2020-07-07
  • mytop 使用介紹 mysql實(shí)時(shí)監(jiān)控工具

    mytop 使用介紹 mysql實(shí)時(shí)監(jiān)控工具

    mytop 是一個(gè)類似 Linux 下的 top 命令風(fēng)格的 MySQL 監(jiān)控工具,可以監(jiān)控當(dāng)前的連接用戶和正在執(zhí)行的命令
    2012-05-05
  • mysql設(shè)置某字段不能重復(fù)問題

    mysql設(shè)置某字段不能重復(fù)問題

    這篇文章主要介紹了mysql設(shè)置某字段不能重復(fù)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • MySQL 查看庫(kù)中大表信息的幾種方法

    MySQL 查看庫(kù)中大表信息的幾種方法

    本文主要介紹了MySQL 查看庫(kù)中大表的幾種方法,為了識(shí)別可能影響數(shù)據(jù)庫(kù)性能的表,下面主要了4種方式,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-04-04
  • 淺談MySQL安裝starting the server失敗的解決辦法

    淺談MySQL安裝starting the server失敗的解決辦法

    如果電腦是不是第一次安裝MySQL,一般會(huì)出現(xiàn)報(bào)錯(cuò)情況,starting the server失敗,通常是因?yàn)樯洗伟惭b的該軟件未清除干凈,本文就詳細(xì)的介紹一下解決方法,感興趣的可以了解一下
    2021-09-09
  • SQL字符型字段按數(shù)字型字段排序?qū)崿F(xiàn)方法

    SQL字符型字段按數(shù)字型字段排序?qū)崿F(xiàn)方法

    由于是按字母順序排列,所以123排在了2的前面,顯然不符合我們的要求,那么怎樣才能按照我們預(yù)想的數(shù)字順序排序呢
    2013-03-03
  • MySQL計(jì)算連續(xù)3天登陸的用戶

    MySQL計(jì)算連續(xù)3天登陸的用戶

    本文主要介紹了MySQL計(jì)算連續(xù)3天登陸的用戶,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05

最新評(píng)論

和硕县| 天祝| 琼海市| 红原县| 瓦房店市| 正定县| 师宗县| 额济纳旗| 江油市| 鄂托克前旗| 鹰潭市| 万源市| 晴隆县| 泸定县| 朔州市| 巴东县| 蒙城县| 霸州市| 沧源| 新绛县| 资源县| 大方县| 阜新| 平顶山市| 德格县| 富锦市| 原阳县| 徐水县| 辽宁省| 洛浦县| 新安县| 鄢陵县| 永平县| 贵德县| 陆丰市| 手机| 政和县| 大名县| 宿州市| 赣榆县| 泰兴市|