Oracle:从SELECT…JOIN插入值,SQL错误:ORA-00947:值不足

Oracle:从SELECT…JOIN插入值,SQL错误:ORA-00947:值不足,oracle,join,insert,ora-00947,Oracle,Join,Insert,Ora 00947,我正在努力做到以下几点: INSERT INTO MyTable(a, b, c) SELECT a FROM source1 JOIN source2 ON ... 其中source2包含B列和C列 然而,Oracle似乎不喜欢这样,并告诉我“SQL错误:ORA-00947:没有足够的值” 我做错什么了吗?这种语法可能吗?或者我必须将其改写为: SELECT a, b, c FROM source1, source2 WHERE .... 谢谢 select需要返回与您在INSERT语句中

我正在努力做到以下几点:

INSERT INTO MyTable(a, b, c)
SELECT a FROM source1
JOIN source2 ON ...
其中source2包含B列和C列

然而,Oracle似乎不喜欢这样,并告诉我“SQL错误:ORA-00947:没有足够的值”

我做错什么了吗?这种语法可能吗?或者我必须将其改写为:

SELECT a, b, c FROM source1, source2 WHERE ....

谢谢

select需要返回与您在
INSERT
语句中列出的列数相同的列数


因此:是的,您需要将查询重写为
selecta,b,c FROM…

在SELECT子句中使用与INSERT子句中相同的标识符,如下所示:

INSERT INTO MyTable(a, b, c)
SELECT s1.a, s2.b, s2.c FROM source1 s1
  JOIN source2 s2 ON ...

这可能是我需要的…让我试试。效果很好。谢谢文森特!