在ORACLE INSERT QUERY中选择QUERY

Ash*_*rma 3 sql oracle

我使用ORACLE 10g作为数据库.

考虑两个表:
1.)ABC,列A作为主键,其余可以保存空值
2.)XYZ,列W作为主键,其余可以保存空值

对等体的数据类型也是相同的
例子:A = W,B = X,C = Y,D = Z
等于表示数据类型相同

以下查询运行完全正常

INSERT INTO ABC(A ,B,C,D) 
VALUES ('klm'  , (SELECT X FROM XYX WHERE W ='SOME_VALUE') , 'Dsl' , 'rwz')
Run Code Online (Sandbox Code Playgroud)

但是以下查询不起作用..如果有人可以帮助我吗?

INSERT INTO ABC(A,B,C,D) 
VALUES ( (SELECT W, X , Y , Z FROM XYX WHERE W ='SOME_VALUE') )
Run Code Online (Sandbox Code Playgroud)

注意:W的值不在表ABC中.没有约束违规

错误报告:SQL错误:ORA-00947:没有足够的值00947. 00000 - "没有足够的值"

请解释??

插入ABC(A,B,C,D)VALUES('123',(从XYZ中选择X,Y,Z,其中W ='same_value'))我需要一个解决这个通用的东西

Pரத*_*ீப் 6

删除values构造函数并在Select之后直接使用查询Insert.

试试这种方式

INSERT INTO ABC(A,B,C,D) 
SELECT W, X , Y , Z FROM XYX WHERE W ='SOME_VALUE'
Run Code Online (Sandbox Code Playgroud)

更新

只需硬编码Select列表中的值(123)

INSERT INTO ABC(A,B,C,D) 
SELECT 123, X , Y , Z FROM XYX WHERE W ='SOME_VALUE'
Run Code Online (Sandbox Code Playgroud)