因为数据库没键外键,在关联查询的时候,会碰到查询条数多余数据库实际条数,这因为关联字段在表中有重复值而导致的。
解决方案:
1、数据库脚本删除重复数据,保留最新的一条
2、对关联字段增加唯一约束
例如:
以下表,部门表的部门编号出现了重复。
首先判断是不是重复
select count(*) from department d select count(*) from ( select distinct dept_code from department )
看以上查出来的数量是不是相同的,不同则就是dept_code有出现重复的
接下来删除重复值,并保留最新的记录
delete from department where id in (
select * from (
select d.id
from department d
inner join (
select m.dept_code,max(m.sys_tm) max_tm FROM department m group by m.dept_code having count(1) > 1
) a on a.dept_code = d.dept_code
where d.sys_tm <> a.max_tm
) tmp
);
给该字段增加唯一索引
ALTER TABLE `department`
ADD UNIQUE INDEX `idex_dept_code` (`dept_code`);