在 ORACLE 插入查询中选择查询
Posted
技术标签:
【中文标题】在 ORACLE 插入查询中选择查询【英文标题】:SELECT QUERY within ORACLE INSERT QUERY 【发布时间】:2016-08-24 09:59:46 【问题描述】:我使用 ORACLE 10g 作为数据库。
考虑两个表: 1.) 以 A 列为主键的 ABC 和 rest 可以保存空值 2.) 以 W 列为主键的 XYZ 和 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 中。没有违反约束
错误报告:SQL 错误:ORA-00947:没有足够的值 00947. 00000 - “没有足够的值”
请解释一下??
插入 ABC(A,B,C,D) VALUES('123' , (SELECT X,Y,Z from XYZ where W = 'same_value')) 我需要解决这个通用问题
【问题讨论】:
【参考方案1】:删除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'
【讨论】:
嘿,感谢您的快速响应每次我不这样做时,插入 ABC(A,B,C,D) VALUES('123' , (SELECT X,Y, Z from XYZ where W = 'same_value')) 我需要一个解决这个通用问题的方法以上是关于在 ORACLE 插入查询中选择查询的主要内容,如果未能解决你的问题,请参考以下文章