有關重覆記錄的刪除

2021-04-02 18:36:34 字數 746 閱讀 4782

有兩個意義上的重覆記錄,一是完全重複的記錄,也即所有欄位均重複的記錄;二是部分關鍵字段重複的記錄,比如name欄位重複,而其他欄位不一定重複或重複可以忽略。

1、對於第一種重複,比較容易解決,使用select distinct * from tablename 就可以得到無重覆記錄的結果集。如果該錶需要刪除重複的記錄(重覆記錄保留1條),可以按以下方法刪除

select distinct * into #tmp from tablename

drop table tablename

select * into tablename from #tmp

drop table #tmp

發生這種重複的原因是表設計不周產生的,增加唯一索引列即可解決。

2、這類重複問題通常要求保留重覆記錄中的第一條記錄,操作方法如下

假設有重複的字段為name,address,要求得到這兩個字段唯一的結果集

select identity(int,1,1) as autoid, * into #tmp from tablename

select min(autoid) as autoid into #tmp2 from #tmp group by name

select * from #tmp where autoid in(select autoid from #tmp2)

最後乙個select即得到了name,address不重複的結果集(但多了乙個autoid欄位,實際寫時可以寫在select子句中省去此列)

刪除重覆記錄

我們經常在資料庫中有重複的記錄這時候我們希望刪除那些重複的記錄 你不要告訴我你是一條條手動刪除的哈 select distinct into newtable form 程式設計客棧nbsp tablename drop table tabwww.cppcns.comlename select in...

SQL查詢重覆記錄,刪除重覆記錄

1 查詢表中多餘的重覆記錄,重覆記錄是根據單個字段 docid 來判斷 select from tablename where docid in select docid from tablename group by docid h ing count docid 1 例二 select from...

Oracle刪除重覆記錄

oracle刪除重覆記錄的最好的方法 delete from emp e where e.rowid select min y.rowid from emp y where y.empno e.empno 1 子查詢找出某員工最低的rowid 肯定只有乙個 其它大於這條記錄rowid的,全部刪除。2...