• <menu id="w2i4a"></menu>
  • logo Navicat使用教程-2019.1

    文檔首頁>>Navicat使用教程-2019.1>>Navicat使用教程:如何在MySQL中定位和刪除有重復(fù)意義的值

    Navicat使用教程:如何在MySQL中定位和刪除有重復(fù)意義的值


    下載Navicat Premium最新版本

    Navicat Premium是一個(gè)可連接多種數(shù)據(jù)庫的管理工具,它可以讓你以單一程序同時(shí)連接到MySQL、Oracle及PostgreSQL數(shù)據(jù)庫,讓管理不同類型的數(shù)據(jù)庫更加的方便。

    DBA最大的麻煩之一是處理重復(fù)數(shù)據(jù)。不管我們?nèi)绾畏婪?,重?fù)數(shù)據(jù)總是會(huì)設(shè)法進(jìn)入到表格。重復(fù)數(shù)據(jù)是一個(gè)大問題,因?yàn)樗鼤?huì)影響應(yīng)用程序視圖(每個(gè)項(xiàng)都應(yīng)該是唯一的)、扭曲統(tǒng)計(jì)信息,在嚴(yán)重情況下還會(huì)增加服務(wù)器開銷。

    在本技巧中,我們將學(xué)習(xí)如何識(shí)別MySQL中的重復(fù)數(shù)據(jù),以及如何刪除它們而不刪除寶貴的有效數(shù)據(jù)。

    Navicat

    重復(fù)類型

    您將遇到的大多數(shù)重復(fù)記錄是兩種不同類型之一:重復(fù)含義和非唯一鍵。在本篇文章中,我們將處理重復(fù)含義;在下篇文章中,我們將處理非唯一鍵。

    當(dāng)副本不是副本時(shí)

    重復(fù)意義是最常見的重復(fù)類型。在這種情況下,兩個(gè)或多個(gè)字段的內(nèi)容不相同,但它們的含義是相同的。你可以把它看作是語義上的重復(fù)數(shù)據(jù)。

    考慮下表摘錄:

    movie_name	media
    ---------------------------
    ACADEMY DINOSAUR	Theatre
    ACE GOLDFINGER	Television
    ADAPTATION HOLES	Theatre
    AFFAIR PREJUDICE	Theatre
    AFRICAN EGG	TV

    在媒體專欄中,“Television”和“TV”兩個(gè)詞條的含義相同,但表達(dá)方式不同。這個(gè)問題通常是由使用自由文本輸入引起的,有限的下拉列表是更好的選擇。

    這種類型的復(fù)制處理起來非常困難,因?yàn)椴荒苁褂胹elect distinct排除重復(fù)項(xiàng)。

    有兩種方法可以解決這個(gè)問題:

    1.使用replace()選擇數(shù)據(jù),將不需要的值替換為希望看到的值:

    SELECT DISTINCT	movie_name,
    REPLACE(media, "TV", "TELEVISION") as media,
    FROM films;

    2.更新實(shí)際表數(shù)據(jù)。下面是一個(gè)聲明,用首選的“TELEVISION”值更新“TV”的所有實(shí)例:

    UPDATE films
    SET media = REPLACE(media, "TV", "TELEVISION")
    WHERE media = "TV";

    下面是一個(gè)真實(shí)的例子!

    一些不需要的卷曲撇號(hào)進(jìn)入了數(shù)據(jù)。注意“O'BRIEN”和“O'BRIEN”條目:

    first_name	last_name
    ---------------------
    PENELOPE	GUINESS
    CONAN	O'BRIEN
    ED	CHASE
    JENNIFER	DAVIS
    CONAN	O'BRIEN

    我們可以像上面那樣處理這個(gè)問題:

    1.使用replace()選擇數(shù)據(jù),用常規(guī)的單引號(hào)替換大撇號(hào),這樣我們就可以始終處理相同的字符:

    SELECT DISTINCT	first_name,
    REPLACE(last_name, "'", "'") as last_name,
    FROM actors	
    WHERE REPLACE(last_name, "'", "'") like "O'BRIEN";

    2.更新實(shí)際表數(shù)據(jù)。此語句用常規(guī)單引號(hào)更新姓氏列中的所有撇號(hào):

    UPDATE actors
    SET last_name = REPLACE(last_name, "'", "'")
    WHERE last_name like "%'%";

    結(jié)論

    重復(fù)記錄、雙精度、冗余數(shù)據(jù)、重復(fù)行;無論您如何稱呼它們,它們都是DBA生命中最大的缺陷之一。然而,重要的是要定期清除它們,以免產(chǎn)生錯(cuò)誤的統(tǒng)計(jì)數(shù)據(jù)并混淆與數(shù)據(jù)庫交互的用戶。

    購買Navicat Premium正版授權(quán),請(qǐng)點(diǎn)擊“咨詢?cè)诰€客服”喲!

    PyCharm

    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    023-68661681

    TOP
    三级成人熟女影院,欧美午夜成人精品视频,亚洲国产成人乱色在线观看,色中色成人论坛 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();