在Oracle中更新具有不同值的多个行

时间:2016-09-02 09:58:44

标签: sql oracle sql-update

我正在尝试使用oracle中的内部视图更新多行。

更新此视图的select语句为:

select count(distinct a.numCount) as numCount, a.accNum as accNum ,
s.unitNum as unitNum 
from tableA a,tableS s  where a.accNum is not null and s.fk_id=
(select id from tableD where sid=a.accNum ) 
group by a.accNum ,s.unitNum ;

我正在尝试的更新声明如下:

update 
(select count(distinct a.numCount) as numCount, a.accNum as accNum ,
s.unitNum as unitNum 
from tableA a,tableS s  where a.accNum is not null and s.fk_id=
(select id from tableD where sid=a.accNum ) 
group by a.accNum ,s.unitNum ) k
set k.unitNum=k.numCount;

我正在尝试使用numCount值更新unitNum。 用作视图时,上述查询无效。 是否有另一种方法可以在Oracle中更新它。

请建议。

表的结构如下:

TableA

accNum   numCount
-----------------------
111        1
222        5
333        2
111        1
111        1
222        5
222        2


TableS

fk_id  unitNum 
-----------------------
123        0
768        0
734        0

TableD

ID      sid
-----------------------
123      222
768      111
734      333

输出应如下:

TableS

fk_id  unitNum 
-----------------------
123        3
768        3
734        1

请建议

1 个答案:

答案 0 :(得分:0)

update tableS s
   set unitNum=
        (select count(distinct a.numCount) as numCount
           from tableA a, tableD d
          where s.fk_id=d.id and d.sid=a.accNum
        );