【问题标题】:SELECT QUERY within ORACLE INSERT QUERY在 ORACLE 插入查询中选择查询
【发布时间】: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')) 我需要解决这个通用问题

【问题讨论】:

    标签: sql oracle


    【解决方案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')) 我需要一个解决这个通用问题的方法
    猜你喜欢
    • 2014-09-01
    • 2019-06-03
    • 2016-08-26
    • 1970-01-01
    • 2018-10-07
    • 1970-01-01
    • 2013-11-20
    • 1970-01-01
    • 2021-09-27
    相关资源
    最近更新 更多