oracle多表关联多字段update

来源:互联网 发布:惠普打印机驱动mac版 编辑:程序博客网 时间:2024/05/16 04:47

多表关联多字段update

有代码有J8:

update spatial_referencesset(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, srtextfrom 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_orderidfrom 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循环    }}

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

0 0
原创粉丝点击