SQL Server 一列或多列重复数据的查询,删除
生活随笔
收集整理的這篇文章主要介紹了
SQL Server 一列或多列重复数据的查询,删除
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一般的后臺程序基本上都會遇到和數據庫交互的情況,在這種情況里面又會碰到數據庫表數據的去重需求,鑒于此,我把自己在項目中遇到的情況做了一個整理,方便自己以后查看,也希望能給看到這邊文章的你提供一個思路,閑話就不扯了,直接上干貨……
數據庫為 mssql 08 r2
其中表的結構和數據如下圖:
查詢表中單列重復
一.帶有having條件的分組查詢方法
(1)查詢某一列重復記錄
-------語句------ SELECT Name FROM dbo.Member t WHERE Name IN (SELECT Name FROM dbo.Member GROUP BY Name HAVING COUNT(Name)>1 ) ORDER BY t.Name
語句執行結果
(2)查詢某一列不重復的記錄
-------語句-----
SELECT * FROM dbo.Member WHERE ID IN (SELECT MIN(ID) FROM dbo.Member GROUP BY Name)
語句執行結果
(3)清除某一列重復的數據
-------語句------- DELETE FROM dbo.Member WHERE ID NOT IN (SELECT MIN(ID) FROM dbo.Member GROUP BY Name)
語句運行結果
解釋:上面的例子只保存了各自Name的最小值。
二,DISTINCT 的用法
溫馨提醒: 不支持多列統計 Oracle和DB2數據庫也適用
利用distinct關鍵字返回唯一不同的值
(1)查詢某一列不重復數據
------語句----- SELECT DISTINCT Name FROM dbo.Member
語句運行結果
(2)DISTINCT 查詢多列不重復(如果查詢的列有任何一個不重復,則這條記錄視為不重復)
-------語句---------- SELECT DISTINCT Name,Uid FROM dbo.Member
語句運行結果
DISTINCT 用于統計
--------語句-------- SELECT COUNT(DISTINCT(Name)) FROM dbo.Member
二、多列重復
數據表結構
查找Original_ID和Match_ID這兩列值重復的行
----------SQL語句----------- SELECT m.* FROM dbo.Match m,( SELECT Original_ID,Match_ID FROM dbo.Match GROUP BY Original_ID,Match_ID HAVING COUNT(1)>1 ) AS m1 WHERE m.Original_ID=m1.Original_ID AND m.Match_ID=m1.Match_ID
語句運行結果
總結
以上是生活随笔為你收集整理的SQL Server 一列或多列重复数据的查询,删除的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 许家印帮贾跃亭广州拿地造车,这是要翻身的
- 下一篇: 1000万存在银行,一年的利息够日常生活