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


自己建個如下表

 

 直接上sql  親自測試 真實有效

----針對單個字段重復數據

delete FROM test a WHERE a.address in ( select s.address from ( SELECT t.address

FROM  test t

GROUP BY  t.address

HAVING COUNT( * ) >1) s )

and a.id not in (select  u.id from (select min(d.id) as id from test d group by d.address having count(* )>1)  u )

------針對多個字段重復數據

delete FROM test a WHERE (a.address,a.name) in ( select s.address,s.name from ( SELECT t.address,t.name

FROM  test t

GROUP BY  t.address,t.name

HAVING COUNT( * ) >1) s )

and a.id not in (select  u.id from (select min(d.id) as id from test d group by d.address,d.name having count(* )>1)  u )

 

那么orcal數據庫怎么做呢 可以利用orcal的偽列 rowid 來處理

 

 

delete from  USER_NAME where rowid  not in (select min(rowid) from USER_NAME group by name)

 

 


免責聲明!

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



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