由於多種原因,在表中可能會有一些重複的記錄,有時需要刪除這些重複的記錄,那麼,如何刪除這些重複的記錄呢?
現有如下的表:
sql> create table a
2 (b number(1));
表已建立。
sql> insert into a values (1);
已建立 1 行。
sql> /
已建立 1 行。
sql> /
已建立 1 行。
sql> insert into a values (2);
已建立 1 行。
sql> insert into a values (2);
已建立 1 行。
sql> ed
已寫入檔案 afiedt.buf
1* insert into a values (3)
sql> /
已建立 1 行。
sql> select * from a;
b----------11
1223
已選擇6行。
sql> alter table a add (c varchar(2));
表已更改。
sql> select * from a;
b c---------- --11
1223
已選擇6行。
sql> update a set c = b;
已更新6行。
sql> select * from a;
b c---------- --
1 11 1
1 12 2
2 23 3
已選擇6行。
sql> select b,c from a group by b, c;
b c---------- --
1 12 2
3 3通過這種方式,可以得到表中唯一的記錄。
有多個欄位時,全部為group by 的分組條件。
另外,如果表中記錄較多,時,最好不要直接用delete方法刪除。因為用這種方法delete資料時,原有的儲存空間是不會釋放的。
可以用
insert into back_a as select b,c from a group by b, c;
truncate table a;
insert into a select * from back_a ;
這樣,即可以釋放原有儲存空間,同時又可以整理現在表的儲存。
如何刪除表中重複記錄?
最近專案中遇到了一個需求,即 如何刪除表中重複記錄,使得所有重複的記錄都只保留一行?在google了半個小時之後,發現居然沒有一個是正常可用的,於是乎只好自己動手寫了一個。因為即便是grails提供了很好的gorm,但是使用sql仍然不可能完全避免,因此把它共享出來,也符合咱們 的 共享開發經驗 的...
如何刪除表中重複的行?
如何刪除表中重複的行?思路 記錄雖然存在重複,但是rowid是唯一的,所以在子查詢取得重複行中最小的rowid,刪除重複行中 大於最小的rowid的行,只是保留了最小rowid的行,就是刪除了重複行。create table bb 建立測試表 bbid int identity 1,1 自增列 bb...
oracle 刪除表中重複記錄
表demo是重複拷貝自dba objects,有88萬左右,不重複的是27323,沒有索引 方法一 delete from demo a where a.rowid select max rowid from demo b where b.object id a.object id 耗時 幾個小時以...
刪除表中重複記錄的方式
1 通過建立臨時表來實現 sql create table temp emp as select distinct from employee sql truncate table employee 清空employee表的資料 sql insert into employee select fro...
請教SQLITE如何刪除表內重複的記錄
求助 請教sqlite如何刪除表內重複的記錄 表如下sid tit 10001 hello1 10002 hello2 10002 hello3 10003 hello4 執行後的效果 sid tit 10001 hello1 10002 hello2 10003 hello4 解決方案 sql c...