嗨大家我有两个表(MIGADM.CORPMISCELLANEOUSINFO和CRMUSER.PREFERENCES),每个都有一个名为PREFERENCE_ID和ORGKEY的字段。我想使用来自每个相应ORGKEY的CRMUSER.PREFERENCES的Preference_ID更新MIGADM.CORPMISCELLANEOUSINFO的首选项ID。所以我写了这个查询;
update migadm.CORPMISCELLANEOUSINFO s set s.PREFERENCE_ID = (
select e.PREFERENCE_ID from crmuser.preferences e where s.ORGKEY = e.ORGKEY)
但我明白了:
ORA-01427: single-row subquery returns more than one row
我该怎么办?
答案 0 :(得分:1)
这意味着您选择的列不够独特,无法识别源表中的一行。您的第一步是识别这些列。
要查看存在此问题的行集,请运行此查询。
select e.origkey,
count(*)
from crmuser.preferences e
group by e.origkey
having count(*) > 1
例如:对于2的origkey,假设首选项表中有两行。
orig_key PREFERENCE_ID
2 202
2 201
Oracle不确定哪些应该用于更新CORPMISCELLANEOUSINFO中的preference_id列
答案 1 :(得分:1)
标识子查询返回多行的行(例如,可以使用REJECT ERROR子句来执行此操作)或使用条件'where rownum = 1'。