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