SQL SERVER刪除重複內容行

2021-05-01 18:13:30 字數 1006 閱讀 4429

剛解決的小問題,之前也解決過類似的問題,但這次還設計到用sql語句加一列,平時不常用這種命令,還是記錄一下吧。

對於重複行刪除的問題,網上很難找到合適的答案,問問題的不少,但在搜尋引擎中草草地看了一下前面的記錄都沒有解決方案。

其實這個問題可以很華麗的解決。

1、如果這張表沒有主鍵(或者相同的行並沒有不相同的內容列),則需要新建乙個自增列,用來區分不同列。例如

alter   table [tablename] add [tid] int identity(1,1)

就是增加乙個自增量的臨時列tid。

為啥要用sql語句?如果超過幾十萬行的話用sql server企業管理器的設計介面修改通常會超時。

2、然後就是關鍵了。給個例子就是我手上正要處理的ip位址所在地清單。近40萬條資料,有sip和eip(開始ip和結束ip)記錄重複,重複條數大概佔1/5左右。對此情況用簡單的一條sql命令就搞定:

delete from query_ip where tid not in (select max(tid) from query_ip group by sip,eip)

就是將sip和eip分組,取得同樣分組的最大的tid值。然後將原表中不在其中的內容(也就是同樣分組的重複內容中更小的id內容)刪除即可。

用這種思路可以延伸出很多sql解題的方式。比如說某個使用者登陸表,要檢視每個使用者最近的登陸記錄。

很優雅的一條查詢語句:

select * from loginlog where id in (select max(id) from loginlog group by userid)

sql強大之極,許多複雜的需求往往可以合併到一條sql語句查詢中實現。因此在我的程式中除了update/insert等操作需要事務支援,或是記錄量實在太大需要分頁或臨時表。通常都用一條sql語句來實現。比如說select *,(select count(*) from *** where ***=t.id) from t where...。這樣就可以在select語句中獲取關聯的統計項,對於中小型系統尤其實用。

SQL Server刪除重覆記錄?

sql server中有重複的資料,所有的字段都一樣,需要刪除重複的,僅保留一條,怎麼辦?假設你的表名為table1,其中有一列column1資料型別為int,它們的值都是1 注意,其他不重複的行此列不能是1,否則必須增加條件直到根據條件返回的行只包含你要刪除的行 declare count int...

SqlServer 刪除重複資料

一 過濾重複的資料 1 完全重複的記錄 select distinct 欄位1,欄位2,欄位3 from 資料表 2 部分關鍵字段重複的記錄 資料結構 角色檔案 角色編碼,角色,角色分類編碼 功 能 取出指定字段 角色分類編碼 為關鍵字的無重複資料,重複的取第一條 說 明 重覆記錄取最後一條,只需要...

在SQL Server中快速刪除重覆記錄

開發人員的噩夢 刪除重覆記錄 想必每一位開發人員都有過類似的經歷,在對資料庫進行查詢或統計的時候不時地會碰到由於表中存在重複的記錄而導致查詢和統計結果不準確。解決該問題的辦法就是將這些重複的記錄刪除,只保留其中的一條。在sql server中除了對擁有十幾條記錄的表進行人工刪除外,實現刪除重覆記錄一...