0

こんにちは、私はオラクルの相関更新に関してこの種の問題を抱えています。

テーブルparamsがあると考えてください。

id_s    id_p    value    desc
-----------------------------------------------
10064     9      aaa     r
10064     8      bbb     t
10064     4      ccc     t
10064     4      ttt     y
11119     9      ddd     f
11119     8      eee     g 
11119     4      fff     b
11119     4      kkk     x

だから私は次を取得するためにparamsを更新したい

id_s    id_p    value    desc
-----------------------------------------------
10064     9      aaa     r
10064     8      bbb     t
10064     4      ccc     t
10064     4      ttt     y
11119     9      aaa     r
11119     8      bbb     t 
11119     4      ccc     t
11119     4      ttt     y

私はこのように更新を書きます

update params p1
   set (p1.value, p1.desc) = (
           select p2.value
                , p2.desc 
             from params p2
            where p2.id_s = 10064
              and p2.id_p = p1.id_p
       )
 where p1.id_s = 11119
     ;

実行するとエラー「ORA01427: 単一行サブクエリが複数の行を返します」が返されます

この更新を機能させるにはどうすればよいですか?

4

2 に答える 2

0

複数の行が返された場合の処理​​を指定しません。次を使用して、任意の行を選択できますrownum = 1

update params p1
   set (p1.value, p1.desc) = (
           select p2.value, p2.desc 
           from params p2
           where p2.id_s = 10064 and p2.id_p = p1.id_p and rownum = 1
       )
where p1.id_s = 11119;
于 2014-04-16T11:04:41.467 に答える