Oracle无法更新XX为null及单个子查询返回多个行
错误:无法更新 表名.字段名 为null
原因:查询结果为null
如下代码执行时,会提示以上问题。
1 Update goodsmove gm 2 Set customfield= 3 (Select Sum(gmi.actinpquantity) 4 From goodsmoveitem gmi 5 Where gmi.goodsmoveid=gm.goodsmoveid 7 Group By gmi.goodsmovid 8 )
执行其中的select语句可以发现,查询结果中有多个结果
1 Update goodsmove gm 2 Set customfield= 3 (Select Sum(gmi.actinpquantity) 4 From goodsmoveitem gmi 5 Left Join goodsmovement gm On gm.goodsmoveid=gmi.goodsmoveid 7 Group By gmi.goodsmoveid 8 ) 9 Where exists( 10 Select 1 From goodsmoveitem gmi 11 Where gmi.goodsmoveid=gm.goodsmoveid)
以上问题解决方式:
1 Update goodsmove gm 2 Set customfield36= 3 (Select Sum(gmi.actinpquantity) 4 From goodsmoveitem gmi 5 Where gmi.goodsmoveid=gm.goodsmoveid 6 Group By gmi.goodsmoveid 7 ) 8 Where exists( 9 Select 1 From goodsmoveitem gmi 10 Where gmi.goodsmovementid=gm.goodsmoveid)