首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

oracle内一个简略update语句执行结果不正确

2012-10-18 
oracle内一个简单update语句执行结果不正确!如题,我有两个表info和bcsheet,结构如下:info:corpnameADDRESS

oracle内一个简单update语句执行结果不正确!
如题,我有两个表info和bcsheet,结构如下:
info:
  corpname ADDRESS
天津市河西区管理局 天津市河西区
天津市河东区管理局 天津市河东区
天津市静海县管理局
天津市北辰区管理局
天津市红桥区管理局


bcsheet:
  cn ADDRESS  
天津市河西区管理局 天津市河西区
天津市河东区管理局
天津市静海县管理局 天津市静海县
天津市宝坻管理局 天津市宝坻
天津市红桥区管理局 天津市红桥区


我想实现的目标是将bcsheet表内的ADDRESS地址添加到info表内名称相同的地址段内,info表中在bcsheet表中没有的记录不变动,info表中如果ADDRESS记录不为空,那么也不变动。
我用的语句如下:

update info a set a.ADDRESS=
(select b.ADDRESS from BCSHEET b 
where a.corpname = b.cn and a.ADDRESS is null) 

可是结果得到的却是
info:
  corpname ADDRESS
天津市河西区管理局  
天津市河东区管理局  
天津市静海县管理局 天津市静海县
天津市北辰区管理局
天津市红桥区管理局 天津市红桥区

我想到的结果是如下的:

info:
  corpname ADDRESS
天津市河西区管理局 天津市河西区
天津市河东区管理局 天津市河东区
天津市静海县管理局 天津市静海县
天津市北辰区管理局
天津市红桥区管理局 天津市红桥区

[解决办法]
update info a set a.ADDRESS=
(select b.ADDRESS from BCSHEET b
where a.corpname = b.cn ) where ADDRESS is null

热点排行