mysql刪除重復數據,保留最新的那一條


因為數據庫沒鍵外鍵,在關聯查詢的時候,會碰到查詢條數多余數據庫實際條數,這因為關聯字段在表中有重復值而導致的。

解決方案:

1、數據庫腳本刪除重復數據,保留最新的一條

2、對關聯字段增加唯一約束

 

例如:

以下表,部門表的部門編號出現了重復。

首先判斷是不是重復

1 select count(*)  from department d
2 
3 select count(*) from ( select distinct dept_code from department )

看以上查出來的數量是不是相同的,不同則就是dept_code有出現重復的

接下來刪除重復值,並保留最新的記錄

 1 delete from department where id in (
 2     select * from (
 3         select d.id 
 4         from department d
 5         inner join (
 6             select m.dept_code,max(m.sys_tm) max_tm FROM department m group by m.dept_code having count(1) > 1 
 7         ) a on a.dept_code = d.dept_code
 8         where d.sys_tm <> a.max_tm
 9     ) tmp
10 );

 

給該字段增加唯一索引

1 ALTER TABLE `department`
2     ADD UNIQUE INDEX `idex_dept_code` (`dept_code`);

 


免責聲明!

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



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