------最佳解决方案-------------------- 报错“单行子查询返回多行”是因为对于某个gap_user.code的前6位,在gap_organize 中有多个记录。
你可以查询下看看那些code对应多条记录。
select code, count(*) from gap_organize group by code having count(*) > 1;
如果多条记录里面随便取条,可以改成
update gap_user
set belong_org = max(select org.id
from gap_organize org, gap_user u
where length(u.code) > 8
and org.code = substr(u.code, 0, 6));
------其他解决方案--------------------
查询有没有为NUll的id,这个报错是因为select ID from gap_organize where ORG_TYPE_ID=2 and code=gap_ele_agency.code这个查不到数据,和gap_organize表本身没关系。