delete
?
from
?t_number;
以下表為例:
create
?
table
?t_number
(
??ID???????
NUMBER
?
not
?
null
,
??USERNAME?
VARCHAR2
(
30
),
??MOBILE???
VARCHAR2
(
30
),
??OPRCODE??
VARCHAR2
(
2
),
??INSDATE??DATE
)
一、記錄中部分字段重復(fù):
delete?from?t_number?a?
where?a.rowid?!=?(select?max(b.rowid)?
??????????????????from?t_number?b?
??????????????????where?a.mobile?=?b.mobile);在oracle中,有個隱藏了自動rowid,里面給每條記錄一個唯一的rowid,我們?nèi)绻氡A糇钚伦钆f的一條記錄, 我們就可以利用這個字段,保留重復(fù)數(shù)據(jù)中rowid最大或最小的一條記錄就可以了
二、記錄中各字段內(nèi)容完全相同的情況
先創(chuàng)建臨時表:
CREATE?TABLE?t_number_tmp?AS?(select?distinct?*?from?t_number);清除原表
delete?from?t_number;將臨時表的數(shù)據(jù)導(dǎo)入原表
insert?into?t_number?(select?*?from?t_number_tmp);刪除臨時表
drop?tablet_number_tmp;
?
posted on 2006-12-04 16:01
一凡 閱讀(341)
評論(0) 編輯 收藏 所屬分類:
DATABASE