sql語句查詢重復(fù)的數(shù)據(jù)(最新推薦)
sql語句查詢重復(fù)的數(shù)據(jù)
查找所有重復(fù)標(biāo)題的記錄:
SELECT * FROM t_info a WHERE ((SELECT COUNT(*) FROM t_info WHERE Title = a.Title) > 1) ORDER BY Title DESC
一。查找重復(fù)記錄
1。查找全部重復(fù)記錄
Select * From 表 Where 重復(fù)字段 In (Select 重復(fù)字段 From 表 Group By 重復(fù)字段 Having Count(*)>1)
2。過濾重復(fù)記錄(只顯示一條)
Select * From HZT Where ID In (Select Max(ID) From HZT Group By Title)
注:此處顯示ID最大一條記錄
二。刪除重復(fù)記錄
1。刪除全部重復(fù)記錄(慎用)
Delete 表 Where 重復(fù)字段 In (Select 重復(fù)字段 From 表 Group By 重復(fù)字段 Having Count(*)>1)
2。保留一條(這個(gè)應(yīng)該是大多數(shù)人所需要的 _)
Delete HZT Where ID Not In (Select Max(ID) From HZT Group By Title)
注:此處保留ID最大一條記錄
1、查找表中多余的重復(fù)記錄,重復(fù)記錄是根據(jù)單個(gè)字段(peopleId)來判斷
select * from people where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1)
2、刪除表中多余的重復(fù)記錄,重復(fù)記錄是根據(jù)單個(gè)字段(peopleId)來判斷,只留有rowid最小的記錄
delete from people where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1) and rowid not in (select min(rowid) from people group by peopleId having count(peopleId )>1)
3、查找表中多余的重復(fù)記錄(多個(gè)字段)
select * from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
4、刪除表中多余的重復(fù)記錄(多個(gè)字段),只留有rowid最小的記錄
delete from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1) and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)
5、查找表中多余的重復(fù)記錄(多個(gè)字段),不包含rowid最小的記錄
select * from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1) and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)
補(bǔ)充:
有兩個(gè)以上的重復(fù)記錄,一是完全重復(fù)的記錄,也即所有字段均重復(fù)的記錄,二是部分關(guān)鍵字段重復(fù)的記錄,比如Name字段重復(fù),而其他字段不一定重復(fù)或都重復(fù)可以忽略。
1、對(duì)于第一種重復(fù),比較容易解決,使用
select distinct * from tableName
就可以得到無重復(fù)記錄的結(jié)果集。
如果該表需要?jiǎng)h除重復(fù)的記錄(重復(fù)記錄保留1條),可以按以下方法刪除
select distinct * into #Tmp from tableName drop table tableName select * into tableName from #Tmp drop table #Tmp
發(fā)生這種重復(fù)的原因是表設(shè)計(jì)不周產(chǎn)生的,增加唯一索引列即可解決。
2、這類重復(fù)問題通常要求保留重復(fù)記錄中的第一條記錄,操作方法如下
假設(shè)有重復(fù)的字段為Name,Address,要求得到這兩個(gè)字段唯一的結(jié)果集
select identity(int,1,1) as autoID, * into #Tmp from tableName select min(autoID) as autoID into #Tmp2 from #Tmp group by Name,autoID select * from #Tmp where autoID in(select autoID from #tmp2)
到此這篇關(guān)于sql語句查詢重復(fù)的數(shù)據(jù)的文章就介紹到這了,更多相關(guān)sql查詢重復(fù)的數(shù)據(jù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SQL Server 磁盤請(qǐng)求超時(shí)的833錯(cuò)誤原因及解決方法
這篇文章主要介紹了SQL Server 磁盤請(qǐng)求超時(shí)的833錯(cuò)誤原因及解決方法,需要的朋友可以參考下2017-06-06SQL?server創(chuàng)建存儲(chǔ)過程詳細(xì)圖文教程
在SQL中存儲(chǔ)過程類似于編程語言的函數(shù),即當(dāng)創(chuàng)建一個(gè)存儲(chǔ)過程之后便可以在接下來任何類似的操作是直接調(diào)用存儲(chǔ)過程,下面這篇文章主要給大家介紹了關(guān)于SQL?server創(chuàng)建存儲(chǔ)過程的相關(guān)資料,需要的朋友可以參考下2024-01-01詳解partition by和group by對(duì)比
這篇文章主要介紹了詳解partition by和group by對(duì)比,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09sqlserver 2000數(shù)據(jù)庫同步 同步兩個(gè)SQLServer數(shù)據(jù)庫的內(nèi)容
程序代碼可以有版本管理CVS進(jìn)行同步管理,可是數(shù)據(jù)庫同步就非常麻煩,只能自己改了一個(gè)后再去改另一個(gè),如果忘記了更改另一個(gè)經(jīng)常造成兩個(gè)數(shù)據(jù)庫的結(jié)構(gòu)或內(nèi)容上不一致.2010-05-05SQL Server 2012 身份驗(yàn)證(Authentication)
這篇SQL Server安全文章,我們學(xué)習(xí)了SQL Server里的多個(gè)驗(yàn)證選項(xiàng)。Windows集成身份驗(yàn)證是最安全的,但并不是都是可行的,微軟多年來已經(jīng)讓SQL Server驗(yàn)證更加安全。2016-04-04SQL Server數(shù)據(jù)庫中的存儲(chǔ)過程介紹
這篇文章主要介紹了SQL Server數(shù)據(jù)庫中的存儲(chǔ)過程介紹,本文講解了什么是存儲(chǔ)過程、存儲(chǔ)過程語法、存儲(chǔ)過程的一些使用實(shí)例等內(nèi)容,需要的朋友可以參考下2015-01-01SqlServer修改數(shù)據(jù)庫文件及日志文件存放位置
這篇文章主要介紹了SqlServer修改數(shù)據(jù)庫文件及日志文件存放位置的方法2014-07-07