0

こんにちは、2 つのテーブル (MIGADM.CORPMISCELLANEOUSINFO と CRMUSER.PREFERENCES) があり、それぞれに PREFERENCE_ID と ORGKEY というフィールドがあります。MIGADM.CORPMISCELLANEOUSINFO の設定 ID を、対応する各 ORGKEY の CRMUSER.PREFERENCES の 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

これは、選択した列が、ソース テーブル内の 1 つの行を識別するのに十分なほど一意ではないことを意味します。最初のステップは、それらの列を識別することです。

この問題のある一連の行を表示するには、次のクエリを実行します。

select e.origkey, 
       count(*) 
  from crmuser.preferences e 
  group by e.origkey
  having count(*) > 1

例: origkey が 2 の場合、設定テーブルに 2 つの行があるとします。

orig_key PREFERENCE_ID

2         202
2         201

オラクルは、CORPMISCELLANEOUSINFO の preference_id 列を更新するためにこれらのどれを使用する必要があるかわかりません

于 2012-08-22T13:53:43.207 に答える
1

サブクエリが複数の行を返す行を特定するか (たとえば、REJECT ERROR 句を使用してそれを行うことができます)、または条件 'where rownum = 1' を使用します。

于 2012-08-22T13:54:41.910 に答える