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