前提:
有2张表,A1、A2,
A1 中有 fields1,fields2 两个字段,
A2 中有 num,fields1,fields2 三个字段;
A2 表对A1的外键是 fields2 ;
A2表对A1表为多对1的映射。
问题描述:
先需要将A2表的字段 fields1 更新为 A1 表中的fields1;A1、A2表中的记录条数未知。
例如:A1表中有如下数据:
fields1 fields2
001 abc
002 bcd
014 cde
...
A2表中有如下数据:
num fields1 fields2
1 0 abc
2 1 abc
3 1 abc
4 0 bcd
5 0 bcd
6 0 cde
.....
A2表更新结果如下:
num fields1 fields2
1 001 abc
2 001 abc
3 001 abc
4 002 bcd
5 002 bcd
6 014 cde
PS:谢谢各位大侠啦
------解决方案--------------------
update A2 t set t.fields1 =A1.fields1 WHERE t.fields2 =(SELECT fields2 FROM A1)
------解决方案--------------------
- SQL code
create or replace procedure update_Job asbegin for varCode in (select a.fields1,a.fields2 from A1 a) loop for varStr in (select a.num,a.fields1,a.fields2 from A2 a where a.fields2 = varCode.Fields2 and a.fields1 != varCode.Fields1) loop update A2 t set t.fields1 = varCode.Fields1 where t.num = varStr.Num; commit; end loop; end loop;end update_Job;