在oracle中将列从一个表复制到另一个表

在oracle中将列从一个表复制到另一个表,oracle,oracle-spatial,Oracle,Oracle Spatial,我尝试将表'sectores'的列[codigomall]复制到表'grm'的列[malla]。 到目前为止,我尝试了以下内容: update grm set grm.malla = (select c.codigomall from grm a, sectores c, table(sdo_join('grm', 'geometry','sectores','geometry', 'mask=inside')) j where j.rowid1 = a.rowid and j.rowid2 =

我尝试将表
'sectores
'的列
[codigomall]
复制到表
'grm'
的列
[malla]
。 到目前为止,我尝试了以下内容:

update grm
set grm.malla = (select c.codigomall from grm a, sectores c, table(sdo_join('grm', 'geometry','sectores','geometry', 'mask=inside')) j where j.rowid1 = a.rowid and j.rowid2 = c.rowid)
where exists (select c.codigomall from grm a, sectores c, table(sdo_join('grm', 'geometry','sectores','geometry', 'mask=inside')) j where j.rowid1 = a.rowid and j.rowid2 = c.rowid)
Oracle提供了正确的流程,但它不会复制
grm.malla
中的任何值

我试图用
j.codigmall
替换
c.codigmall
,但Oracle给了我一个错误:

update grm
set malla = (select j.codigomall from grm a, sectores c, table(sdo_join('grm', 'geometry','sectores','geometry', 'mask=inside')) j where j.rowid1 = a.rowid and j.rowid2 = c.rowid)
where exists (select j.codigomall from grm a, sectores c, table(sdo_join('grm', 'geometry','sectores','geometry', 'mask=inside')) j where j.rowid1 = a.rowid and j.rowid2 = c.rowid)
你知道我在哪里失败了吗?我觉得j.codigomall是个错误


上下文:有两个空间层,我想通过空间覆盖将一列继承到另一列

我认为您的问题可能只是外部表(您正在更新的表)没有以任何方式连接到select查询。我很惊讶它没有给你一个错误,因为你说select查询返回多行,而你试图将它们分配给一个列(grm.malla)

我想试试这个,看看是否有用

update grm a
set a.malla = (select c.codigomall from sectores c, table(sdo_join('grm', 'geometry','sectores','geometry', 'mask=inside')) j where j.rowid1 = a.rowid and j.rowid2 = c.rowid)
where exists (select c.codigomall from sectores c, table(sdo_join('grm', 'geometry','sectores','geometry', 'mask=inside')) j where j.rowid1 = a.rowid and j.rowid2 = c.rowid)

select查询与外部
grm
表不相关,这是问题的一部分。当您自己运行
select c.codigomall…
查询时会得到什么?没有价值观?一个值?多个值?如果我执行该选择,它将返回一个包含值的列,如果我不使用c.codigomall,而是将两个表一起返回。选择部分工作正常。