日期:2014-05-17  浏览次数:20755 次

求个SQL脚本,请各位大侠帮忙~
前提:  
  有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 as
begin
  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;