Oracle 多表联合update的问题

cdevfrbgt123 2016-10-21 05:23:22
业务上有如下的需求,UTC_DATA, COUNTRY_UTC,SITE_UTC 分别是UTC数据表,COUNTRY UTC表和SITE UTC表, UTC_DATA .UTC的值等于 COUNTRY_UTC.UTC - SITE_UTC.UTC,我写的Update语句如下:

Update UTC_DATA A SET UTC=
(
select CU.UTC-SU.UTC
from COUNTRY_UTC CU , SITE_UTC SU
WHERE A.COUNTRY_id = CU.COUNTRY_ID AND A.SITE_NAME=SU.name
)


但是执行之后,UTC_DATA的UTC栏位值没有更新,正确的update语句怎么写?望各位赐教,急,谢谢!
...全文
388 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
卖水果的net 2016-10-22
  • 打赏
  • 举报
回复
如果 UTC 原来为 NULL,在你更新完以后,还是 NULL ,那就说明: 1、没有找到匹配的行; 2、CU.UTC 和 SU.UTC ,这两个值至少有一个 NULL 你不妨加一个条件,看看提示更新了几行数据; Update UTC_DATA A SET UTC= ( select CU.UTC-SU.UTC from COUNTRY_UTC CU , SITE_UTC SU WHERE A.COUNTRY_id = CU.COUNTRY_ID AND A.SITE_NAME=SU.name ) where exists( select * from COUNTRY_UTC CU , SITE_UTC SU WHERE A.COUNTRY_id = CU.COUNTRY_ID AND A.SITE_NAME=SU.name )
sych888 2016-10-22
  • 打赏
  • 举报
回复
COUNTRY_UTC CU , SITE_UTC SU 这两张表没有直接关联条件? 按你的语句来看,如果不返回多行记录集的话 不存在不更新的问题,要么更新为CU.UTC-SU.UTC的差值,要么更新为空 记得COMMIT 另外,你是在更新的窗口查询的吗?还是另开一个窗口查询的

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧