sql - 在 ORACLE INSERT QUERY 中选择查询

标签 sql oracle

我正在使用 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/

相关文章:

sql - 查询与自身的联合生成不同的计划

mysql - 根据第二个表中的值进行选择

linux - 当从 Linux 服务器中的 sqlplus 插入时,Windows-1252 (80-9F) 控制字符在 oracle db 中插入为 �

sql - 我们可以在单个 sql 中包含多个 "WITH AS"- Oracle SQL

oracle - 使用聚合函数 Oracle 对记录进行分组

sql - Oracle 相当于 T-SQL SET @var = @var + ' ' ;

php - 将所有评论分配给 SQL 中的一篇文章

基于 2 列的 ORDER BY 的 MySQL rowrank

javascript - 处理 SQL :0 PhoneGap SQL 时出错

java - 插入错误 : java. sql.SQLException: ORA-00911: 无效字符