亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.430618.com 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

朋友們,我們在使用數據庫的過程中,偶爾會犯一些低級錯誤。比如我們創建的某一張表,插入了兩條一模一樣的數據,想要刪除其中一條怎么辦?

這是筆者在頭條問答中看到的一個問題,并做了回答。感覺這個問題挺有意思,看似簡單的問題,我自己也曾經犯過這樣的錯誤,我下面就以SQLServer為例,提一種處理方法供大家參考。

一張表出現多條一模一樣的數據?

很多朋友可能會覺得奇怪,一張表里面怎么可能出現多條一模一樣的數據呢?是的,正常情況這種情況是不應該發生的,因為我們創建的表基本都會有主鍵,想要一模一樣是基本不可能的。

SQL小技巧:一張表中存在兩行完全一致的數據,如何刪除?

 

但每個人對數據庫的掌握程度和應用場景不同,有時候可能創建了一張表(如上圖),陰差陽錯的沒有設置主鍵,再陰差陽錯的插入了兩條或多條一模一樣的數據,悲劇就這樣產生了。

重復數據是無法直接刪除的!

插進去容易,想要干掉卻就難嘍!如果您在MSSMS中想要刪除這條記錄,首先要打開表內容行列表,在某一行上單擊鼠標右鍵執行刪除菜單,如下圖所示:

SQL小技巧:一張表中存在兩行完全一致的數據,如何刪除?

 

您滿心歡喜的以為就這樣搞定了,開心早了!您可能想不到的是,MSSMS提示您:完全一致的數據無法刪除!如下圖所示:

SQL小技巧:一張表中存在兩行完全一致的數據,如何刪除?

 

想寫個SQL刪除腳本來刪除嗎?

delete test where ...

可您where后面的條件怎么寫,不寫條件,兩條就被一起干掉了哦,寫條件,兩條一模一樣,您怎么寫?

問題到這兒,感覺有點無解了!其實不用擔心,方法還是有的。

為表結構增加一個自增字段

方法當然有很多,我推薦一個我自己用過的方法,那就是為表結構增加一個自增的int字段,通過這個字段將數據變成非完全一致,如下圖所示:

SQL小技巧:一張表中存在兩行完全一致的數據,如何刪除?

 

我們增加了一個FID字段,設置為自增字段,表結構更改后,該字段會被自動賦值,從1開始遞增。我們回頭再看看修改表結構之后的數據內容:

SQL小技巧:一張表中存在兩行完全一致的數據,如何刪除?

 

沒錯,兩條原本一模一樣的數據,因為有了自增字段,終于變的不一樣了。怎么刪除,我相信絕大部分朋友就有大把的方法了,比如在MSSMS中選中行直接刪除掉,還可以些刪除的SQL腳本:

delete test where fid=2
SQL小技巧:一張表中存在兩行完全一致的數據,如何刪除?

 

前面無法寫腳本,是因為where后面的條件無從下手,現在有了唯一區分的字段就不一樣了。

將數據表結構還原

表結構如何還原到原來的樣子呢?很簡單,進入表結構設計窗口,把前面新增的字段刪除就行了,當然,您也可以寫個刪除字段的SQL腳本。刪除后,看上去您似乎什么都沒做,但冗余的數據卻被您刪除了,參看下圖:

SQL小技巧:一張表中存在兩行完全一致的數據,如何刪除?

 

忙活了半天,終于把重復數據刪除了,您是慶幸自己把這活干完了、還是想著如何反省自己不要再犯這類錯誤呢?

杜絕此類問題的根本方法

杜絕此類問題的根本方法,就是創建表時,所有的表都要設置主鍵、設置主鍵、設置主鍵,重要的問題說三遍!沒有主鍵的表,想想都是可怕的,不僅可能造成數據重復,而且查詢效率極低。

當然,如果您忘了設置主鍵、不小心造成了數據完全一致無法刪除,試試我前面的方法也未嘗不可。
 

分享到:
標簽:SQL
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定