oracle多表关联多字段update

本文介绍了一种使用SQL进行多表关联并更新特定字段的方法。通过示例展示了如何更新一张表中的字段为另一张表中匹配项的数据,以及如何在更新前检查是否需要更新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

多表关联多字段update

有代码有J8:

update spatial_references
set(
auth_name, 
auth_srid, 
falsex, 
falsey, 
xyunits, 
falsez, 
zunits, 
falsem, 
munits, 
xycluster_tol, 
zcluster_tol, 
mcluster_tol, 
object_flags, 
srtext
)=(select  
auth_name, 
auth_srid, 
falsex, 
falsey, 
xyunits, 
falsez, 
zunits, 
falsem, 
munits, 
xycluster_tol, 
zcluster_tol, 
mcluster_tol, 
object_flags, 
srtext
from spatial_references where srid=0)
where srid=2;

===============================================
2016.07.09
以上这条语句不够实用。今天有同事问到,结果露怯,于是发粪涂墙,狂搜资料,又写了一条实用一点的:

update qq q set 证书GUID=(select zs.guid from 证书表 zs where zs.code=q.证书编号 and rownum=1)

更完整一点的:

update qq q set 证书GUID=(select zs.guid from 证书表 zs where zs.code=q.证书编号 and rownum=1)
where exists(select 1 from 证书表 zs where zs.code=q.证书编号 and zs.guid<>q.证书GUID)
update nodeconfiginfo n set (qh_name,qh_parentid,qh_orderid)=(select qh_name,qh_parentid,qh_orderid
from SeaBoardConfig s where s.qh_id=n.qh_id)
where exists(select 1 from SeaBoardConfig s where s.qh_id=n.qh_id);

这条语句,SET里有个循环;然后外层也有个循环。这两个循环没有什么直接关系。我不知道这条SQL语句是如何执行的,猜想应该是嵌套循环:

foreach()
{//外层循环
	foreach()
	{//set循环
	}
}

如果没有外层循环的话,那么会全表执行。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值