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、這類(lèi)重復(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í)際寫(xiě)時(shí)可以寫(xiě)在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、這類(lèi)重復(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í)際寫(xiě)時(shí)可以寫(xiě)在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)文章
SQL Server配置管理器無(wú)法連接到WMI提供程序
這篇文章主要介紹了SQL Server配置管理器無(wú)法連接到WMI提供程序,提示您沒(méi)有權(quán)限或者該服務(wù)器無(wú)法訪問(wèn),如何解決?2016-11-11
SQLServer查詢某個(gè)時(shí)間段購(gòu)買(mǎi)過(guò)商品的所有用戶
這篇文章主要介紹了SQLServer查詢某個(gè)時(shí)間段購(gòu)買(mǎi)過(guò)商品的所有用戶,需要的朋友可以參考下2017-07-07
SQL server中提示對(duì)象名無(wú)效的解決方法
本文主要介紹了SQL server中提示對(duì)象名無(wú)效的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01
sql server deadlock跟蹤的4種實(shí)現(xiàn)方法
一提到跟蹤倆字,很多人想到警匪片中的場(chǎng)景,但這里介紹的可不是一樣的哦,下面這篇文章主要給大家介紹了關(guān)于sql server deadlock跟蹤的4種實(shí)現(xiàn)方法,文中通過(guò)圖文以及示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2018-09-09
[圖文]三分鐘學(xué)會(huì)Sql Server的復(fù)制功能
有兩個(gè)服務(wù)器,裝了兩個(gè)數(shù)據(jù)庫(kù),一個(gè)是主的,一個(gè)是備用的,下面的的功能就將主數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù),實(shí)時(shí)同步到備用數(shù)據(jù)庫(kù)上,使他們的數(shù)據(jù)內(nèi)容,基本上保持一致。2008-07-07
N字符在Sql Server字段類(lèi)型中的重要性概述
一般如果用到中文或者其它特殊字符,我就會(huì)使用n開(kāi)頭的類(lèi)型,否則的話直接使用var開(kāi)頭的,接下來(lái)講解一下N字符在Sql Server字段類(lèi)型中的重要性,感興趣的朋友不妨了解下,或許對(duì)你有所幫助2013-02-02
t-sql/mssql用命令行導(dǎo)入數(shù)據(jù)腳本的SQL語(yǔ)句示例
這篇文章主要介紹了t-sql或mssql用命令行導(dǎo)入數(shù)據(jù)腳本的SQL語(yǔ)句示例,大家參考使用吧2013-11-11

