SqlServer刪除表中重覆記錄

来源:http://www.cnblogs.com/xinlj/archive/2016/01/13/5126602.html
-Advertisement-
Play Games

重覆記錄:有兩個意義上的重覆記錄 一是完全重覆的記錄,也即所有欄位均重覆的記錄; 二是部分關鍵欄位重覆的記錄,比如Name欄位重覆,而其他欄位不一定重覆或都重覆可以忽略。 1、對於第一種重覆,比較容易解決,使用1 select distinct * from tableName 就可以得...


  重覆記錄:有兩個意義上的重覆記錄

  一是完全重覆的記錄,也即所有欄位均重覆的記錄;

  二是部分關鍵欄位重覆的記錄,比如Name欄位重覆,而其他欄位不一定重覆或都重覆可以忽略。


  1、對於第一種重覆,比較容易解決,使用

1 select distinct * from tableName 

  就可以得到無重覆記錄的結果集。

  如果該表需要刪除重覆的記錄(重覆記錄保留1條),可以按以下方法刪除

1  --查詢無重覆記錄的結果集,並將結果集保存到臨時表#Tmp
2  select distinct * into #Tmp from tableName
3  --刪除表tableName
4  drop table tableName
5  --將臨時表#Tmp數據全部插入表tableName
6  select * into tableName from #Tmp
7  --刪除臨時表
8  drop table #Tmp 

 

發生這種重覆的原因是表設計不周產生的,增加唯一索引列即可解決。

 

  2、這類重覆問題通常要求保留重覆記錄中的第一條記錄,操作方法如下

  假設有重覆的欄位為Name,Address,要求得到這兩個欄位唯一的結果集

1  --將tableName中的全部記錄插入臨時表#Tmp,並增加行號欄位
2  select identity(int,1,1) as autoID, * into #Tmp from tableName
3  --將臨時表#Tmp中的無重覆記錄插入臨時表#Tmp2(min(autoID)....group by Name,autoID-實現保留Name重覆的記錄中的第一條)
4  select min(autoID) as autoID into #Tmp2 from #Tmp group by Name,autoID

  最後一個select即得到了Name,Address不重覆的結果集(但多了一個autoID欄位,實際寫時可以寫在select子句中省去此列)

通過上面操作並將tableName中無重覆的結果集保存到了臨時表#Tmp2,可以通過刪除表tableName,然後再將臨時表#Tmp2記錄插入tableName實現刪除

tableName中重覆的記錄(只保留重覆記錄的第一條記錄)

註意:tableName中沒有autoID欄位,可以select去除autoID欄位實現

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Hadoop HDFS負載均衡 轉載請註明出處: "http://www.cnblogs.com/BYRans/" <br/ Hadoop HDFSHadoop 分散式文件系統(Hadoop Distributed File System),簡稱 HDFS,被設計成適合運行在通用硬體上的分散式...
  • 一、集群的理論知識1.1 集群成員MongoDB的集群類似於GreenPlum集群,由一個入口節點負責任務分發與結果統計,分片結節負責執行任務。不同GP,多了一個config servers。集群有三個組件:A。shards:分片,即數據結點,存儲數據和執行計算。為了保證高可用和數據一致性,生產環境...
  • MongoDB的C#驅動只有一些類是線程安全的,其中包含(MongoServer、MongoDatabase、MongoCollection、MongoGridFS),其他的大多數類不是線程安全的。有些場景需要保證數據的正確性,需要將一系列的操作綁定到DB級對象。那麼可以用類似事務控制的方式保證一致...
  • 最近自己在做一個小系統玩的時候涉及到了文件的上傳,於是在網上找到Java上傳文件的方案,最後確定使用common-fileupload實現上傳操作。需求說明用戶添加頁面有一個“上傳”按鈕,點擊按鈕彈出上傳界面,上傳完成後關閉上傳界面。所需Jar包commons.fileupload-1.2.0.ja...
  • Hadoop7天課程 課程體系 Day01>>>>>>>>>>>>>>>>>>>> hadoop項目簡介 hadoop簡介 hadoop前景 apache的開源項目 解決問題:(核心) 海量數據的存儲(HDFS) ---Hadoop分散式文件系統,解決機器怎麼存儲 海量數據的分析(MapReduce...
  • http://www.2cto.com/database/201204/126772.html
  • 本文目錄列表:1、基於當前日的小時數和分鐘數2、mysqlunix_timestamp和from_unixtime的mssql實現3、總結語4、參考清單列表基於當前日的小時數和分鐘數 平時工作中遇到過一天內個時間段的用戶登錄情況的需求,也有針對每個小時內的分鐘段內的用戶的活躍度的需求,很多類似的需求...
  • 手冊上只說了truncate table不能截斷由外鍵約束引用的表。也沒給個例子。我自己寫一個吧。 還空著那麼多地方,也沒啥說的,鄙視那些無視版權隨意抓取博文的爬蟲小網站站長。
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...