desce " />
2023年12月14日發(fā)(作者:國(guó)王生病了)

java重復(fù)錄入怎么刪除,刪除重復(fù)記錄的方法
學(xué)習(xí)sql有一段時(shí)間了,發(fā)現(xiàn)在我建了一個(gè)用來測(cè)試的表(沒有建索引)中出現(xiàn)了許多的重復(fù)記錄。后來總結(jié)了一些刪除重復(fù)記錄的方法,在
Oracle中,可以通過唯一rowid實(shí)現(xiàn)刪除重復(fù)記錄;還可以建臨時(shí)表來實(shí)現(xiàn)...這個(gè)只提到其中的幾種簡(jiǎn)單實(shí)用的方法,希望可以和大家分享
(以表employee為例)。SQL>descemployee
Name Null? Type
----------------------------------------- -------- ------------------
emp_id NUMBER(10)
emp_name VARCHAR2(20)
salary NUMBER(10,2)
可以通過下面的語句查詢重復(fù)的記錄:
SQL>lect*fromemployee;
EMP_ID EMP_NAMESALARY
---------- ---------------------------------------- ----------
1 sunshine10000
1 sunshine10000
2 mon20000
2 mon20000
3 xyz30000
2 mon20000
SQL>lectdistinct*fromemployee;
EMP_ID EMP_NAMESALARY
---------- ---------------------------------------- ----------
1 sunshine10000
2 mon20000
3 xyz30000
SQL>lect*fromemployeegroupbyemp_id,emp_name,salaryhavingcount(*)>1
EMP_ID EMP_NAMESALARY
---------- ---------------------------------------- ----------
1 sunshine10000
2 mon20000
SQL>lect*fromemployee e1
whererowidin(lectmax(rowid)fromemploye _id=_idand
_name=_=);
EMP_ID EMP_NAMESALARY---------- ---------------------------------------- ----------
1 sunshine10000
3 xyz30000
2 mon20000
2.刪除的幾種方法:
(1)通過建立臨時(shí)表來實(shí)現(xiàn)
SQL>create table temp_emp as (lect distinct * from employee)
SQL>truncatetableemployee;(清空employee表的數(shù)據(jù))
SQL>inrtintoemployeelect*fromtemp_emp;(再將臨時(shí)表里的內(nèi)容插回來)
( 2)通過唯一rowid實(shí)現(xiàn)刪除重復(fù)記錄.在Oracle中,每一條記錄都有一個(gè)rowid,rowid在整個(gè)數(shù)據(jù)庫中是唯一的,rowid確定了每條記錄是
在Oracle中的哪一個(gè)數(shù)據(jù)文件、塊、行上。在重復(fù)的記錄中,可能所有列的內(nèi)容都相同,但rowid不會(huì)相同,所以只要確定出重復(fù)記錄中那
些具有最大或最小rowid的就可以了,其余全部刪除。
SQL>deletefromemployee e2whererowidnotin(lectmax()fromemployee e1 where
_id=__name=_=);--這里用min(rowid)也可以。
SQL>deletefromemployee e2whererowid
=);
(3)也是通過rowid,但效率更高。
SQL>deletefromemployeewhererowidnotin(lectmax()fromemployee t1groupby
_id,_name,);--這里用min(rowid)也可以。
EMP_ID EMP_NAMESALARY
---------- ---------------------------------------- ----------
1 sunshine10000
3 xyz30000
2 mon20000
SQL>descemployee
Name Null? Type
----------------------------------------- -------- ------------------
emp_id NUMBER(10)
emp_name VARCHAR2(20)
salary NUMBER(10,2)
可以通過下面的語句查詢重復(fù)的記錄:
SQL>lect*fromemployee;
EMP_ID EMP_NAMESALARY
---------- ---------------------------------------- ----------
1 sunshine100001 sunshine10000
2 mon20000
2 mon20000
3 xyz30000
2 mon20000
SQL>lectdistinct*fromemployee;
EMP_ID EMP_NAMESALARY
---------- ---------------------------------------- ----------
1 sunshine10000
2 mon20000
3 xyz30000
SQL>lect*fromemployeegroupbyemp_id,emp_name,salaryhavingcount(*)>1
EMP_ID EMP_NAMESALARY
---------- ---------------------------------------- ----------
1 sunshine10000
2 mon20000
SQL>lect*fromemployee e1
whererowidin(lectmax(rowid)fromemploye _id=_idand
_name=_=);
EMP_ID EMP_NAMESALARY
---------- ---------------------------------------- ----------
1 sunshine10000
3 xyz30000
2 mon20000
2.刪除的幾種方法:
(1)通過建立臨時(shí)表來實(shí)現(xiàn)
SQL>create table temp_emp as (lect distinct * from employee)
SQL>truncatetableemployee;(清空employee表的數(shù)據(jù))
SQL>inrtintoemployeelect*fromtemp_emp;(再將臨時(shí)表里的內(nèi)容插回來)
( 2)通過唯一rowid實(shí)現(xiàn)刪除重復(fù)記錄.在Oracle中,每一條記錄都有一個(gè)rowid,rowid在整個(gè)數(shù)據(jù)庫中是唯一的,rowid確定了每條記錄是
在Oracle中的哪一個(gè)數(shù)據(jù)文件、塊、行上。在重復(fù)的記錄中,可能所有列的內(nèi)容都相同,但rowid不會(huì)相同,所以只要確定出重復(fù)記錄中那
些具有最大或最小rowid的就可以了,其余全部刪除。
SQL>deletefromemployee e2whererowidnotin(lectmax()fromemployee e1 where
_id=__name=_=);--這里用min(rowid)也可以。
SQL>deletefromemployee =);
(3)也是通過rowid,但效率更高。
SQL>deletefromemployeewhererowidnotin(lectmax()fromemployee t1groupby
_id,_name,);--這里用min(rowid)也可以。
EMP_ID EMP_NAMESALARY
---------- ---------------------------------------- ----------
1 sunshine10000
3 xyz30000
2 mon20000
本文發(fā)布于:2023-12-14 05:10:06,感謝您對(duì)本站的認(rèn)可!
本文鏈接:http://m.newhan.cn/zhishi/a/1702501807245875.html
版權(quán)聲明:本站內(nèi)容均來自互聯(lián)網(wǎng),僅供演示用,請(qǐng)勿用于商業(yè)和其他非法用途。如果侵犯了您的權(quán)益請(qǐng)與我們聯(lián)系,我們將在24小時(shí)內(nèi)刪除。
本文word下載地址:java重復(fù)錄入怎么刪除,刪除重復(fù)記錄的方法.doc
本文 PDF 下載地址:java重復(fù)錄入怎么刪除,刪除重復(fù)記錄的方法.pdf
| 留言與評(píng)論(共有 0 條評(píng)論) |