我有一个名为Andamio的表(命运表),其中包含以下列:
CODTIPOLOCALIZACION
TXTNOMBRE
CODLOCALIZACION
CODCENTRO
CODPUBLICO
TXTDESCRIPCION
另一个名为Centro(原点),包含以下列:
CODCENTRO
CODPARKING
TXTPARKING
我想在前两列填充所有具有相同值的行:
CODTIPOLOCALIZACION = 2 for all
TXTNOMBRE = "Park" for all
第三列来自自动序列:'MySeq_seq'
CODLOCALIZACION = MySeq_seq.NEXTVAL
最后三列必须与原始表“Centro”相同,但条件是命运表中没有其他行“Andamio”具有相同的CODCENTRO和CODPUBLICO值等于CODCENTRO和CODPARKING
INSERT INTO ANDAMIO
(CODTIPOLOCALIZACION, TXTNOMBRE, CODLOCALIZACION, CODCENTRO, CODPUBLICO,
TXT_DESCRIPCION)
SELECT '2', 'Park', MySeq_seq.NEXTVAL, Datos.CODCENTRO, Datos.CODPARKING, Datos.TXTPARKING
FROM (SELECT CODCENTRO, CODPARKING, TXTPARKING FROM CENTRO centrop
WHERE (centrop.CODCENTRO <> ANDAMIO.CODCENTRO
AND centrop.CODPARKING <> ANDAMIO.CODPUBLICO)) Datos
我已经尝试过这些INSERT INTO序列,有很多变化[使用INSERT INTO表VALUES('2','Park',SELECT(...))]和其他许多... 我总是得到无效标识符,因为Oracle声称在Andamio表中没有名为CODPUBLICO的列,但确实存在。
任何帮助将不胜感激。 谢谢!
答案 0 :(得分:0)
您收到该错误是因为您在insert语句的select部分引用了andamio列,而没有引用from子句中的andamio表。
我怀疑一个不存在的条款会给你你想要的东西,例如:
insert into andamio (codtipolocalizacion,
txtnombre,
codlocalizacion,
codcentro,
codpublico,
txt_descripcion)
select '2',
'Park',
myseq_seq.nextval,
datos.codcentro,
datos.codparking,
datos.txtparking
from (select codcentro, codparking, txtparking
from centro cen
where not exists (select null
from andamio an
where cen.codcentro = an.codcentro
and cen.codparking = an.codpublico) datos;