求oracle SQL修改多行记录
请问怎么用一个SQL修改多行记录。
现在有2张表,gap_organize,gap_user. gap_user有Code,belong_org列,gap_organize表里面有ID,Code.现在里面有6000条数据。
做的目的是 修改gap_user表里面的belong_org值,具体的值是gap_organize里面的id, 条件是 gap_user里面Code的前6位 和gap_organize表里的Code相等.
参照原来提问的,我的写法在下图 原来的可以,现在的怎么不行报错“单行子查询返回多行”。
原来的地址:http://topic.csdn.net/u/20121015/14/a66981be-097d-4349-8c76-de1711ccc1c4.html
操作见下面图片。
[解决办法]
报错“单行子查询返回多行”是因为对于某个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));
[解决办法]