Oracle:来自SELECT的INSERT值... JOIN,SQL错误:ORA-00947:值不够

时间:2012-07-10 13:17:52

标签: 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 ....

谢谢!

2 个答案:

答案 0 :(得分:10)

在SELECT子句中使用与INSERT子句中一样多的标识符,如:

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

答案 1 :(得分:0)

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

所以:是的,您需要将查询重写为SELECT a,b,c FROM ...