Oracle 使用另一个具有类似属性的表中的值更新一个表列

Oracle 使用另一个具有类似属性的表中的值更新一个表列,oracle,Oracle,大家好,我有两个表(MIGADM.CORPMISCELLANEOUSINFO和CRMUSER.PREFERENCES),每个表都有一个名为PREFERENCE\u ID和ORGKEY的字段。我想用CRMUSER.PREFERENCES中每个相应ORGKEY的Preference_ID更新MIGADM.CORPMISCELLANEOUSINFO的首选项ID。所以我写了这个查询 update migadm.CORPMISCELLANEOUSINFO s set s.PREFERENCE_ID = (

大家好,我有两个表(MIGADM.CORPMISCELLANEOUSINFO和CRMUSER.PREFERENCES),每个表都有一个名为PREFERENCE\u ID和ORGKEY的字段。我想用CRMUSER.PREFERENCES中每个相应ORGKEY的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

我该怎么办?

这意味着您选择的列不够唯一,无法识别源表中的一行。第一步是识别这些列

要查看有此问题的行集,请运行此查询

select e.origkey, 
       count(*) 
  from crmuser.preferences e 
  group by e.origkey
  having count(*) > 1
对于origkey of 2,假设preferences表中有两行

orig_key PREFERENCE_ID

2         202
2         201

Oracle不确定应该使用其中的哪一个来更新CORPMISCELLANEOUSINFO中的preference_id列

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

你绝对是对的。在第二张表中,有一个ORGKEY被重复。非常感谢。拉杰什