Oracle数据库817:
用B表的数据更新A表:
Update A set A.Amt=A.Amt+(select sum(Amt) from B where A.ID=B.ID)
出现这样的问题:
在B表中不存在的A表的ID(not B.ID in (select A.ID from A)),A表相应的记录会被更新为Null,这显然不是所期望的结果。
请教各位前辈。
用B表的数据更新A表:
Update A set A.Amt=A.Amt+(select sum(Amt) from B where A.ID=B.ID)
出现这样的问题:
在B表中不存在的A表的ID(not B.ID in (select A.ID from A)),A表相应的记录会被更新为Null,这显然不是所期望的结果。
请教各位前辈。
解决方案 »
- VC编写的DLL的接口函数入参为char*,Delphi调用使用pchar与之对应仅能传入第一个字符,后面字符丢失。
- 怎么清空数据集??
- word 密码不记得了,如何破。
- 100分!RichEdit控件如何设置上下标?
- 哪位知道如何单独安装BDE引擎?
- 怎样用DELPHI6.0做出WINAMP中窗口自动吸附的效果?
- 请教如何提高对数据表操作速度的问题。
- 如何用memo显示选定的文本?
- 请问如何实现“宏”?
- 请教如何控制在EDIT或MASKEDIT中输入的内容是有效的日期?
- 发送WM_NEXTDLGCTL可以使焦点由Edit控件自动按Taborder跳到下一个Edit控件,如果跳上去呢??
- 大放送!!!!手机短讯源码。
试试
一样的结果。
to genphone_ru:
你这样岂不是把原来的Null更新为0了,还不是一样的错误(更严重的错误)!
Update A set A.Amt=A.Amt+(select sum(Amt) from B where A.ID=B.ID)
where A.ID in (select ID from B)
答案二:
Update A set A.Amt=A.Amt+(select sum(Amt) from B where A.ID=B.ID)
where exists (select ID from A where A.ID=b.ID)
经测试,答案二效率好于答案一。
sum()出来永远不会等于0,所以genphone_ru(改行去学VC),他提供的NVL(sum(Amt),0)不会把null值变成0(我都不知nvl是什么意思)