因是手動錄入資料,所以經常會產生重複的資料,這時就需要刪除多餘的資料。
建立測試用表:
可以看到「allen」和「smith」這兩個人的資料重複了,現在要求表中name重複的資料只保留一行,其他的刪除。
刪除資料有好幾種方法,下面介紹三種方法。
方法一:通過name相同,id不同的方式來判斷。
sql**如下:
delete from dupes a
where exists (select 1
from dupes b
where a.name = b.name
and a.id > b.id);
select * from dupes;
執行結果如下:
方法二:用rowid來代替其中的id。
sql**如下:
delete from dupes a
where exists (select 1
from dupes b
where a.name = b.name
and a.rowid > b.rowid);
執行結果如下:
方法三:通過分析函式根據name分組生成序號,然後刪除序號大於1的資料。
sql**如下:
delete from dupes a
where rowid in (select rid
from (select rowid as rid,
row_number() over(partition by name order by id) as seq
from dupes)
where seq > 1);
執行結果和上面一樣。
刪除重覆記錄
我們經常在資料庫中有重複的記錄這時候我們希望刪除那些重複的記錄 你不要告訴我你是一條條手動刪除的哈 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...
有關重覆記錄的刪除
有兩個意義上的重覆記錄,一是完全重複的記錄,也即所有欄位均重複的記錄 二是部分關鍵字段重複的記錄,比如name欄位重複,而其他欄位不一定重複或重複可以忽略。1 對於第一種重複,比較容易解決,使用select distinct from tablename 就可以得到無重覆記錄的結果集。如果該錶需要刪...