Oracle 更新多行多列

一使用情况

  本情况适用于,表a和表b有唯一关联字段时期关联关系为1对1.且需求为:在关联字段相等情况瞎,用表b的字段值更新表a的字段值。

二 语法

---建立表A

CREAT A(

A1 VARCHAR(BYTE 10),

A2 VARCHAR(BYTE 10),

A3 VARCHAR(BYTE 10),

A4 VARCHAR(BYTE 10),

);

--建立表B

CREAT B(

B1 VARCHAR(BYTE 10),

B2 VARCHAR(BYTE 10),

B3 VARCHAR(BYTE 10),

B4 VARCHAR(BYTE 10),

);

UPDATE A SET (A1,A2,A3)=(

SELECT B1,B2,B3.B4 --此处和表A字段对应

FROM B WHERE A1=B,B1 -- 满足一对一关联关系

)

WHERE EXISTS( SELECT 1 FROM B WHERE B.B1=A1);--此处避免表b没有关联关系造成A表被更新的全是null的情况

三忠告

我在写这个文章的前5分钟,因为没有调试成功报错子查询返回多条记录的错误而怀疑此语法和逻辑的问题。经过向前辈请教,前辈提醒报错子查询返回多条,那么语法就没有错误。犯了在错误中着急而失去查找问题不去用逻辑排查的问题。可能在调试过程中你也会遇到此类问题,请耐心查找是否关系真的一对一。因为字段信息太多,我调试的存储过程可能有其他的限制条件没有care到。

 

四结束语

上诉内容也是我在网上按照需求收索并进行尝试,并且向前辈请教。如有写错的地方请谅解,但是整体思路和语法是没有问题,本文章的内容全部手敲,但是我站在了前辈们的脚踝处看世界。也感谢那些乐于奉献的前辈们。加油明天会更好,今天我学会了怎么去更新多行多列不是吗...

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值