当前位置: 代码迷 >> Oracle开发 >> 这样的写法对吗?解决思路
  详细解决方案

这样的写法对吗?解决思路

热度:43   发布时间:2016-04-24 06:37:02.0
这样的写法对吗?
update main am
   set am.cmmt_amt =
       (select am.cmmt_amt - nvl(sum(x.cmmt_amt),0) from MAIN x where am.a_key = x.b_key)
 where exists (select 1
          from AUTOGRADE_MAIN a_m
         where a_m.acct_nat_key = am.ult_prt_acct_nat_key)
   and exists (select 1
          from MAIN x
         where am.a_key = x.b_key
           and x.A_KEY <> x.B_KEY
           AND x.CM <> 0
           AND x.FLAG = 'N')



这样的写法对吗?sum那句语句中的select 表别名用的是x,再下面的子查询也用到表别名x? 这行吗? 
------解决方案--------------------
下面的x所属的子查询只能关联到main am,而关联不到=后面子查询中的x
所以不影响
------解决方案--------------------
一个在set子句中,一个在where子句中
解析时是分别解析的,没问题的
  相关解决方案