SQL語(yǔ)句實(shí)現(xiàn)刪除ACCESS重復(fù)記錄的兩種方法
更新時(shí)間:2010年04月11日 02:22:36 作者:
有兩個(gè)意義上的重復(fù)記錄,一是完全重復(fù)的記錄,也即所有字段均重復(fù)的記錄,二是部分關(guān)鍵字段重復(fù)的記錄,比如Name字段重復(fù),而其他字段不一定重復(fù)或都重復(fù)可以忽略。
以下就重復(fù)記錄刪除的問(wèn)題作一闡述。
有兩個(gè)意義上的重復(fù)記錄,一是完全重復(fù)的記錄,也即所有字段均重復(fù)的記錄,二是部分關(guān)鍵字段重復(fù)的記錄,比如Name字段重復(fù),而其他字段不一定重復(fù)或都重復(fù)可以忽略。
1、對(duì)于第一種重復(fù),比較容易解決,使用
select distinct * from tableName
就可以得到無(wú)重復(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ù)問(wèn)題通常要求保留重復(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)
最后一個(gè)select即得到了Name,Address不重復(fù)的結(jié)果集(但多了一個(gè)autoID字段,實(shí)際寫時(shí)可以寫在select子句中省去此列)
有兩個(gè)意義上的重復(fù)記錄,一是完全重復(fù)的記錄,也即所有字段均重復(fù)的記錄,二是部分關(guān)鍵字段重復(fù)的記錄,比如Name字段重復(fù),而其他字段不一定重復(fù)或都重復(fù)可以忽略。
1、對(duì)于第一種重復(fù),比較容易解決,使用
select distinct * from tableName
就可以得到無(wú)重復(fù)記錄的結(jié)果集。
如果該表需要?jiǎng)h除重復(fù)的記錄(重復(fù)記錄保留1條),可以按以下方法刪除
復(fù)制代碼 代碼如下:
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ù)問(wèn)題通常要求保留重復(fù)記錄中的第一條記錄,操作方法如下
假設(shè)有重復(fù)的字段為Name,Address,要求得到這兩個(gè)字段唯一的結(jié)果集
復(fù)制代碼 代碼如下:
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)
最后一個(gè)select即得到了Name,Address不重復(fù)的結(jié)果集(但多了一個(gè)autoID字段,實(shí)際寫時(shí)可以寫在select子句中省去此列)
您可能感興趣的文章:
- SQL語(yǔ)句實(shí)現(xiàn)刪除重復(fù)記錄并只保留一條
- MySQL數(shù)據(jù)庫(kù)中刪除重復(fù)記錄的方法總結(jié)[推薦]
- SqlServer2005中使用row_number()在一個(gè)查詢中刪除重復(fù)記錄的方法
- SQL Server2008中刪除重復(fù)記錄的方法分享
- sqlserver 刪除重復(fù)記錄處理(轉(zhuǎn))
- SqlServer 2005中使用row_number()在一個(gè)查詢中刪除重復(fù)記錄
- mysql刪除重復(fù)記錄語(yǔ)句的方法
- SQL對(duì)冗余數(shù)據(jù)的刪除重復(fù)記錄只保留單條的說(shuō)明
- 有用的SQL語(yǔ)句(刪除重復(fù)記錄,收縮日志)
- sql 刪除表中的重復(fù)記錄
相關(guān)文章
通過(guò)備份記錄獲取數(shù)據(jù)庫(kù)的增長(zhǎng)情況
通過(guò)備份記錄獲取數(shù)據(jù)庫(kù)的增長(zhǎng)情況2009-06-06
mssql server 數(shù)據(jù)庫(kù)附加不上解決辦法分享
在我們做開發(fā)中經(jīng)常會(huì)對(duì)數(shù)據(jù)庫(kù)進(jìn)行備份,但有時(shí)假就會(huì)出現(xiàn)數(shù)據(jù)庫(kù)附加不上問(wèn)題,下面我們來(lái)看看一個(gè)朋友的解決辦法2011-09-09
數(shù)據(jù)庫(kù)更新Sqlserver腳本總結(jié)
數(shù)據(jù)庫(kù)更新Sqlserver腳本總結(jié),需要的朋友可以參考下。2011-06-06
SQL語(yǔ)句如何實(shí)現(xiàn)超簡(jiǎn)單的多表查詢
多表查詢就是在一條查詢語(yǔ)句中,從多張表里一起取出所需的數(shù)據(jù),如果要想進(jìn)行多表查詢,下面這篇文章主要給大家介紹了關(guān)于SQL語(yǔ)句如何實(shí)現(xiàn)超簡(jiǎn)單的多表查詢的相關(guān)資料,需要的朋友可以參考下2022-05-05
sqlserver數(shù)據(jù)庫(kù)大型應(yīng)用解決方案經(jīng)驗(yàn)總結(jié)
對(duì)于一個(gè)大型的互聯(lián)網(wǎng)應(yīng)用,每天百萬(wàn)級(jí)甚至上億的PV無(wú)疑對(duì)數(shù)據(jù)庫(kù)造成了相當(dāng)高的負(fù)載。對(duì)于系統(tǒng)的穩(wěn)定性和擴(kuò)展性造成了極大的問(wèn)題2013-10-10
SQLServer按順序執(zhí)行多個(gè)腳本的方法(sqlcmd實(shí)用工具使用方法)
有一百個(gè)腳本,那么就要按順序執(zhí)行過(guò)千次,這種工作量可不是一個(gè)人能承受得了的,下面我們介紹一個(gè)方法可以SQLServer按順序執(zhí)行多個(gè)腳本的方法2013-11-11
SQL server中提示對(duì)象名無(wú)效的解決方法
本文主要介紹了SQL server中提示對(duì)象名無(wú)效的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01
SQL語(yǔ)句計(jì)算兩個(gè)日期之間有多少個(gè)工作日的方法
本文的主要內(nèi)容是用SQL語(yǔ)言計(jì)算兩個(gè)日期間有多少個(gè)工作日,需要的朋友可以參考下2015-08-08

