两个表间的 update 问题

lxw 2005-03-02 11:04:31

表A 表B

A_RCDID B_RCDID A_RCDID B_RCDID
==================== ====================
A20 B100 0 B100
A30 B150 0 B150
A40 B255 0 B255
A50 0 0 B888

执行UPDATE 表记录要实现如下: [表A与B 的关联字段是 a_rcdid ]

表B

A_RCDID B_RCDID
===================
A20 B100
A30 B150
A40 B255
0 B888
...全文
334 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
czj68586 2005-03-15
  • 打赏
  • 举报
回复
select a.a_rcdid,b.b_rcdid from a a inner join b b on a.b_rcdid=b.b_rcdid union select a.b_rcdid,
b.b_rcdid from a a inner join b b on a.b_rcdid=b.a_rcdid where b.b_rcdid not
in(select b_rcdid from a )试试这个,这个通过啦,
yown 2005-03-15
  • 打赏
  • 举报
回复
这个和SQLSERVER有区别

用EXISTS

Update B set B.A_RCDID=A.A_RCDID

where exists(

select * from A

where B_RCDID=B.B_RCDID
)
yanguorong 2005-03-15
  • 打赏
  • 举报
回复
UPDATE B
SET A_RCDID = (SELECT A_RCDID
FROM A
WHERE A.B_RCDID = B.B_RCDID
) ;
这样就行了!

czj68586 2005-03-14
  • 打赏
  • 举报
回复
Update B
set B.A_RCDID=nvl(A.A_RCDID,0)
where exists(
select 1
from A
where B.B_RCDID=A.B_RCDID(+)
)
angel_zyz 2005-03-14
  • 打赏
  • 举报
回复
上上樓的調出的結果有點不一樣:B888 對應的結果不為0,是空
fastyou 2005-03-12
  • 打赏
  • 举报
回复
晚了..
Alkeen 2005-03-11
  • 打赏
  • 举报
回复
这样就可以了。。

UPDATE B
SET A_RCDID = (SELECT A_RCDID
FROM A
WHERE A.B_RCDID = B.B_RCDID
)
WHERE B_RCDID IN (SELECT B_RCDID FROM A)
sky592 2005-03-11
  • 打赏
  • 举报
回复
这个问题我在access中遇到过,并愉快的解决了方法如下:
update a,b set a.A_RCDID = b.a.RCDID where (a.B_RCDID = b.B_RCDID)
在access中是可以的但在oracle中没试过. 你的关联字段应是B_RCDID 吧!
lxw 2005-03-02
  • 打赏
  • 举报
回复
说错了,是B_rcdid
wupangzi 2005-03-02
  • 打赏
  • 举报
回复
表A与B 的关联字段是 a_rcdid ????
不是吧,关联字段都为0,没法子哦!
shotking 2005-03-02
  • 打赏
  • 举报
回复
update 表B B
set b.A_RCDID=(select nvl(A.ARCDID,0)
from 表A A
where B.B_RCDID=A.B_RCDID)
HorizonXR 2005-03-02
  • 打赏
  • 举报
回复
Update 表B B
set B.A_RCDID=nvl(A.A_RCDID,0)
where exists(
select 1
from 表A A
where B.B_RCDID=A.B_RCDID(+)
)
xdjsj331 2005-03-02
  • 打赏
  • 举报
回复
update b
set b.A_RCDID = a.A_RCDID
from a,b
where a.B_RCDID = b.B_RCDID
lxw 2005-03-02
  • 打赏
  • 举报
回复
update b,a set b.A_RCDID = a.RCDID where a.B_RCDID = b.B_RCDID

这句不行呀, update 不可以支持 两个表的呀。
请回复,谢谢!
fuxia 2005-03-02
  • 打赏
  • 举报
回复
update b,a set b.A_RCDID = a.RCDID where a.B_RCDID = b.B_RCDID
lxw 2005-03-02
  • 打赏
  • 举报
回复
UP

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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