我正在使用 ORACLE 10g 作为数据库。
考虑两个表:
1.) 以A列为主键的ABC,rest可以存空值
2.) XYZ 以 W 列为主键,rest 可以保存空值
同行的数据类型也是相同的
示例: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')
但是下面的查询不起作用..如果有人可以帮助我?
INSERT INTO ABC(A,B,C,D)
VALUES ( (SELECT W, X , Y , Z FROM XYX WHERE W ='SOME_VALUE') )
注意:W 的值不在表 ABC 中。没有违反约束
Error report: SQL Error: ORA-00947: not enough values 00947. 00000 - "not enough values"
请解释一下??
Insert into ABC(A,B,C,D) VALUES('123' , (SELECT X,Y,Z from XYZ where W = 'same_value')) 我需要一个解决这个通用问题的方法
最佳答案
删除values
构造函数并在Insert
之后直接使用Select
查询。
试试这个
INSERT INTO ABC(A,B,C,D)
SELECT W, X , Y , Z FROM XYX WHERE W ='SOME_VALUE'
更新
只需在 Select
列表中硬编码值 (123)
INSERT INTO ABC(A,B,C,D)
SELECT 123, X , Y , Z FROM XYX WHERE W ='SOME_VALUE'
关于sql - 在 ORACLE INSERT QUERY 中选择查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39120119/