2012-10-05 63 views
2

我試着去一些領域從表到其他副本,我想通過插入像這樣子查詢做IY:甲骨文,插入從子查詢multirows有超過一排

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" 

任何想法我該怎麼做?

感謝,

回答

10

覺得你有

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

之間做出選擇
insert into table (a, b, c) 
(SELECT x, y, z from table2) 

你可以有值,並選擇只混合(由anomyous馬當作指出) 當你的選擇查詢只返回一列和一行!

順便說一句,使用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) 
); 
+0

好了,你可以* *有'select'查詢而不是一個單一的如果該查詢是一個標量子查詢(即它返回**正好**一列和一行) –

+0

@a_horse_with_no_name好吧,不知道,糾正我的帖子。 –