oracle刪除重復數據只保留一條


-- 如表role_user的數據

ROLEID       USERID
  15       88010000000074    
  15       88010000000074    
  15       88010000000074    

-- 刪除相同記錄只剩下一條記錄

 

根據兩個字段查詢重復數據 (roleid,userid)

select * from role_user a where (a.roleid,a.userid) in(select roleid,userid from role_user group by roleid,userid having count(*) > 1)

刪除重復數據只保留一條

delete from role_user where rowid not in (select min(rowid) from role_user group by roleid , userid )

 

下面的只根據userid進行查詢與刪除

select count(1),USERID from role_user group by USERID HAVING count(1)>1 

DELETE from role_user WHERE (userid) IN ( SELECT userid FROM role_user GROUP BY userid HAVING COUNT(userid) > 1) AND ROWID NOT IN (SELECT MIN(ROWID) FROM role_user GROUP BY userid HAVING COUNT(*) > 1);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM