因為數據庫沒鍵外鍵,在關聯查詢的時候,會碰到查詢條數多余數據庫實際條數,這因為關聯字段在表中有重復值而導致的。
解決方案:
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`);