看看这个怎么写update?

aska_xxy 2004-07-29 06:26:50
两个表
A
id qty
B
id qty

要把AB中ID 相等行上的qty加到B上,即

B.qty =B.qty +A.qty

...全文
126 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
CodeMagic 2004-07-30
  • 打赏
  • 举报
回复
update b set qty=nvl((select a.qty+b.qty from a where a.id=b.id),b.qty) where b.id between 1 and 100;
dinya2003 2004-07-30
  • 打赏
  • 举报
回复
update b set b.qty=b.qty+(select a.qty from a where a.id=b.id )where b.id between 1 and 100
zwj0712 2004-07-29
  • 打赏
  • 举报
回复
update b set b.qty=b.qty+(select a.qty from a where a.id=b.id) where b.id between 1 and 100
aska_xxy 2004-07-29
  • 打赏
  • 举报
回复
问题追加:

首先肯定一楼写的应该是正确的,
类似 b.qty=b.qty+(SELECT a.qty FROM A a WHERE a.id=b.id)应该会报错吧?

问题,如果要在A上锁定范围a.id between 1 and 100,而在更新B的时候
我也只想更新b.id between 1 and 100的是数据,而不是整个B表,
请问是否有解呢?

WilliamXiaoLiang 2004-07-29
  • 打赏
  • 举报
回复
update
b
set
b.qty=b.qty+(select a.qty from a where a.id=b.id);

1 ROW UPDATE

顶一下!
QQ:390958177
Email:xiaol@chinaebiz.biz
ljxsea 2004-07-29
  • 打赏
  • 举报
回复
UDATE B SET B.qty=B.qty+NVL((SELECT A.qty FROM A WHERE A.id=B.id),0) WHERE B.id=A.ID
caral525 2004-07-29
  • 打赏
  • 举报
回复
郁闷,为什么我发贴前看不到有人贴了答案呢,急!又没分分挣了
caral525 2004-07-29
  • 打赏
  • 举报
回复
UPDATE B b
SET b.qty=b.qty+(SELECT a.qty FROM A a WHERE a.id=b.id);
dinya2003 2004-07-29
  • 打赏
  • 举报
回复
不好意思,用了我自己的测试表

update b set b.qty=b.qty+(select a.qty from a where a.id=b.id)

dinya2003 2004-07-29
  • 打赏
  • 举报
回复
update testc c set c.name=c.name+(select a.name from testa a where a.id=c.id)
CodeMagic 2004-07-29
  • 打赏
  • 举报
回复
update b set qty=nvl((select a.qty+b.qty from a where a.id=b.id),b.qty);

17,377

社区成员

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

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