求教sql语句 更新update set =select?

「已注销」 2016-02-16 02:38:53
sql需求。。更新A表中字段money信息,value值为A表中money的值 + 从B表中select获取的money,
两表通过userid关联,两个字段都是int类型。。

UPDATE A set money= (22+22) WHERE A.userid=B.userid;
诸如这种,我将()中+两边换成select语句之后怎么都不行,求解?
...全文
850 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
关山万里 2016-04-06
  • 打赏
  • 举报
回复
楼上正解..
ZhanYunQI 2016-04-04
  • 打赏
  • 举报
回复
update A SET A.money=NVL((SELECT B.money FROM B WHERE A.userid=B.userid),0) WHERE A表CONDITION
luofenghen 2016-03-28
  • 打赏
  • 举报
回复

update A SET A.money=(SELECT B.money FROM B WHERE A.userid=B.userid)
ssqtjffcu 2016-03-26
  • 打赏
  • 举报
回复
引用 10 楼 zzklovehrr 的回复:
试试看: UPDATE A SET A.money= A.money+( SELECT money FROM B WHERE A.userid=B.userid) ;
你这语句很危险啊,要是b表没有找到对应记录,岂不是把a表的money字段更新为null了
布莱恩凯 2016-03-25
  • 打赏
  • 举报
回复
update a set a.money=a.money+(select money from b where b.userid=a.userid) where exists(select 1 from b c where c.userid=a.userid)
zkzhong 2016-03-24
  • 打赏
  • 举报
回复
试试看: UPDATE A SET A.money= A.money+( SELECT money FROM B WHERE A.userid=B.userid) ;
zy18755122285 2016-03-18
  • 打赏
  • 举报
回复
bo871747022 2016-03-17
  • 打赏
  • 举报
回复
merge into a using b on (a.id = b.id) when matched then update set a.money= a.money+ b.money
东方淄墨 2016-03-16
  • 打赏
  • 举报
回复
UPDATE a SET a.money=a.money+(SELECT money FROM b WHERE a.userid=b.userid)
hoyuleds 2016-02-17
  • 打赏
  • 举报
回复
--楼上错了,不好意思。
DECLARE
CURSOR a IS
SELECT userid,money FROM b;
val a%ROWTYPE;
BEGIN
OPEN a;
LOOP
FETCH a
INTO val;
EXIT WHEN a%NOTFOUND;
UPDATE a SET money = val.money WHERE userid = val.userid;
COMMIT;
END LOOP;
CLOSE a;
END;
/
COMMIT;
EXIT
hoyuleds 2016-02-17
  • 打赏
  • 举报
回复
DECLARE
CURSOR a IS
SELECT userid,money FROM b;
val a%ROWTYPE;
BEGIN
OPEN a;
LOOP
FETCH a
INTO val;
EXIT WHEN a%NOTFOUND;
UPDATE a SET money = val.money WHERE userid = val.money;
COMMIT;
END LOOP;
CLOSE a;
END;
/
COMMIT;
EXIT
ls_rose 2016-02-17
  • 打赏
  • 举报
回复
楼上正解...
sinat_18597213 2016-02-17
  • 打赏
  • 举报
回复
UPDATE a SET a.money=a.money+(SELECT money FROM b WHERE a.id1=b.id1)
ORAClE SE 2016-02-17
  • 打赏
  • 举报
回复
--楼上错了,不好意思。
DECLARE
  CURSOR a IS
    SELECT userid,money FROM b;
  val a%ROWTYPE;
BEGIN
  OPEN a;
  LOOP
    FETCH a
      INTO val;
    EXIT WHEN a%NOTFOUND;
    UPDATE a SET money = val.money WHERE userid = val.userid;
    COMMIT;
  END LOOP;
  CLOSE a;
END;
/ 
COMMIT;
EXIT
卖水果的net 2016-02-16
  • 打赏
  • 举报
回复
-- 大概如下,你试一下
update a
set a.money = a.money + b.money
from a,b 
where a.id = b.id

17,082

社区成员

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

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