0

大家好,我有两个表(MIGADM.CORPMISCELLANEOUSINFO 和 CRMUSER.PREFERENCES),每个表都有一个名为 PREFERENCE_ID 和 ORGKEY 的字段。我想为每个对应的 ORGKEY 使用来自 CRMUSER.PREFERENCES 的 Preference_ID 更新 MIGADM.CORPMISCELLANEOUSINFO 的 Preference 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

我该怎么办?

4

2 回答 2

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 列

于 2012-08-22T13:53:43.207 回答
1

识别子查询返回多行的行(例如,您可以使用 REJECT ERROR 子句来执行此操作)或使用条件“where rownum = 1”。

于 2012-08-22T13:54:41.910 回答