Oracle,从具有多行的子查询插入多行

2024-01-11

我试图将某个字段从一个表复制到另一个表,我想通过使用带有子查询的插入来执行 iy,如下所示:

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 -  "single-row subquery returns more than one row"
  

知道我应该怎么做吗?

Thanks,


认为你必须做出选择

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

and

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)
);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Oracle,从具有多行的子查询插入多行 的相关文章

随机推荐