【问题标题】:Oracle, insert multirows from subquery with more than one rowOracle,从多行的子查询中插入多行
【发布时间】:2012-09-26 06:50:28
【问题描述】:

我试图将某个字段从一个表复制到另一个,我想通过使用带有这样的子查询的插入来做到这一点:

insert into sed_reporte_generico 
(srg_usuario, 
srg_nombres,
srg_ape_paterno,
srg_ape_materno,
srg_objetivo,
srg_peso_ob,
srg_calf_ob)
values
(
(select us.su_st_usuario, us.su_st_nombres, us.su_st_ap_paterno, us.su_st_ap_materno,     ob.soc_st_descripcion, ob.soc_nr_peso,ob.soc_nr_calificacion 
from sed_objetivo ob, sed_usuarios us, sed_evaluacion ev 
where ob.se_evaluacion_pk = ev.se_evaluacion_pk and ev.su_colaborador_fk =     us.su_usuarios_pk)
);

但我收到了这个错误:

01427. 00000 - “单行子查询返回多于一行”

知道我该怎么做吗?

谢谢,

【问题讨论】:

    标签: oracle select insert row multirow


    【解决方案1】:

    认为你必须在两者之间做出选择

    insert into table (a, b, c) VALUES(1, 2, 3)
    

    insert into table (a, b, c) 
    (SELECT x, y, z from table2)
    

    您只能将 VALUES 和 SELECT 混合使用(正如一匹不正常的马所指出的那样) 当您的选择查询仅返回一列一行时!

    顺便说一句,使用 JOIN... 来加入你的表(使用 WHERE 子句来加入表是一个坏习惯):

    INSERT INTO sed_reporte_generico 
    (srg_usuario, 
    srg_nombres,
    srg_ape_paterno,
    srg_ape_materno,
    srg_objetivo,
    srg_peso_ob,
    srg_calf_ob)
    
    (select us.su_st_usuario, us.su_st_nombres, us.su_st_ap_paterno, us.su_st_ap_materno,     ob.soc_st_descripcion, ob.soc_nr_peso,ob.soc_nr_calificacion 
    FROM sed_objetivo ob 
    JOIN sed_evaluacion ev  ON ob.se_evaluacion_pk = ev.se_evaluacion_pk
    JOIN sed_usuarios us on  ev.su_colaborador_fk =     us.su_usuarios_pk)
    );
    

    【讨论】:

    • 好吧,如果该查询是标量子查询(即它返回完全一列一行)
    • @a_horse_with_no_name 好的,不知道,更正了我的帖子。
    猜你喜欢
    • 2021-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 2013-10-31
    相关资源
    最近更新 更多