尝试从多个表插入时插入语句返回ORA-01427错误

时间:2016-03-16 09:40:44

标签: oracle insert ora-01427

我有这个表F_Flight,我试图从3个不同的表插入。第一列,第四列和第五列来自相同的列,第二列和第三列来自不同的表。当我执行代码时,我得到一个“单行子查询返回多行”错误。

data.apply(lambda x: pyeto.sunset_hour_angle(x['lat'],x['sol_dec']), axis=1)

1 个答案:

答案 0 :(得分:0)

您的子查询会返回多行,这就是错误消息所说的内容。您尝试插入单行的各个数据位和子查询之间没有相关性。

这可以通过一个更简单的insert...select连接来完成,例如:

insert into f_flight (planeid, groupid, dateid, flightduration, kmsflown)
select pkl.planeid, bt.groupid, dd.id, pkl.flightduration, pkl.kmsflown
from pilotkeylookup pkl
join bridgetable bt on bt.pilotid = pkl.p1id
join d_date dd on dd."Date" = pkl.launchtime;

这会将主PilotKeyLookup表连接到您在子查询中使用的键上的其他两个。

存储ID值而不是实际日期是不常见的,如果launchtime有一个时间组件 - 似乎可能来自名称 - 并且您的d_date条目只是日期(即所有时间)在午夜)然后你找不到比赛;你可能需要这样做:

join d_date dd on dd."Date" = trunc(pkl.launchtime);

似乎这可能是一个视图,因为您正在存储重复数据 - 显然,f_flight中的所有内容都可以从其他表中找到。