4

我正在尝试执行以下操作:

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 ....

谢谢!

4

2 回答 2

11

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

INSERT INTO MyTable(a, b, c)
SELECT s1.a, s2.b, s2.c FROM source1 s1
  JOIN source2 s2 ON ...
于 2012-07-10T13:20:56.430 回答
1

INSERT选择需要返回与您在语句中列出的相同数量的列。

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

于 2012-07-10T13:20:51.993 回答