Oracle 使用另一个具有类似属性的表中的值更新一个表列
大家好,我有两个表(MIGADM.CORPMISCELLANEOUSINFO和CRMUSER.PREFERENCES),每个表都有一个名为PREFERENCE\u ID和ORGKEY的字段。我想用CRMUSER.PREFERENCES中每个相应ORGKEY的Preference_ID更新MIGADM.CORPMISCELLANEOUSINFO的首选项ID。所以我写了这个查询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 = (
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被重复。非常感谢。拉杰什