由於在經過多次對成績進行匯入。導致了正方系統成績內部產生了1個學生多條重複成績記錄的情況。
為了刪除重覆記錄,可以經過以下3步:
(1)建立乙個和cjb一樣結構的表如:cjb_090324
create table cjb_090324
(xn varchar2(10),
xq number(1),
xkkh varchar2(50),
xh varchar2(20),
xm varchar2(30),
kcmc varchar2(80),
qzxs number(3,1),
xf varchar2(5),
cj varchar2(8),
zscj number(5,1),
jd number(5,1),
bz varchar2(120),
xgsj varchar2(40),
xgs varchar2(20),
cxbj number(1),
pscj varchar2(8),
qmcj varchar2(8),
sycj varchar2(8),
bkcj varchar2(8),
cxcj varchar2(8),
tj varchar2(1),
kcxz varchar2(20),
tjbz number(1),
tzf varchar2(20),
tzfjd number(3,1),
kcdm varchar2(20),
cxxnxq varchar2(12),
qzcj varchar2(8),
fxbj varchar2(10),
jf number,
kcgs varchar2(20),
xsqr varchar2(4),
bzxx varchar2(150),
dxqjl varchar2(2),
bkcj_tzf varchar2(8),
bkcj_bz varchar2(10),
llcj varchar2(20),
llzscj varchar2(20),
xmdm varchar2(100),
xmmc varchar2(50),
qmcj_bf varchar2(20),
gaxs varchar2(20)
)(2)把原成績表中的資料匯入到新錶cjb_090324中。原理很簡單。
insert 語句配合 select語句連用。
關鍵是用select 語句的「distinct」 關鍵字,在進行select 查詢的時候就過濾掉了重覆記錄。因此寫入中間表「cjb_090324」的就是正確的唯一記錄。
語句如下:
insert into zfxfzb.cjb_090324(
xn,xq,
xkkh,
xh,xm,
kcmc,
qzxs,
xf,cj,
zscj,
jd,bz,
xgsj,
xgs,
cxbj,
pscj,
qmcj,
sycj,
bkcj,
cxcj,
tj,
kcxz,
tjbz,
tzf,
tzfjd,
kcdm,
cxxnxq,
qzcj,
fxbj,
jf,kcgs,
xsqr,
bzxx,
dxqjl,
bkcj_tzf,
bkcj_bz,
llcj,
llzscj,
xmdm,
xmmc,
qmcj_bf,
gaxs
) select distinct
xn,xq,
xkkh,
xh,xm,
kcmc,
qzxs,
xf,cj,
zscj,
jd,bz,
xgsj,
xgs,
cxbj,
pscj,
qmcj,
sycj,
bkcj,
cxcj,
tj,
kcxz,
tjbz,
tzf,
tzfjd,
kcdm,
cxxnxq,
qzcj,
fxbj,
jf,kcgs,
xsqr,
bzxx,
dxqjl,
bkcj_tzf,
bkcj_bz,
llcj,
llzscj,
xmdm,
xmmc,
qmcj_bf,
gaxs
from zfxfzb.cjb
(3)把原成績表中的資料刪除
delete from zfxfzb.cjb
(4)再重複(2)操作,只是把表名對調即可。
經過我的測試,18萬條記錄,列印耗時200s 左右。
表刪除重覆記錄 小記
刪除資料庫中重覆記錄方法 表test loge 有兩個字段,乙個是 id,乙個是 name 我們需要刪除多餘的行 1 使用rowid 保留rowid 最大的值 delete from test loge a where rowid select max rowid from test loge b ...
刪除重覆記錄
我們經常在資料庫中有重複的記錄這時候我們希望刪除那些重複的記錄 你不要告訴我你是一條條手動刪除的哈 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...