1

以下のスクリプトは、単一行のサブクエリが複数の行を返すという 01427 エラーを返します。rownum<2 はいくつかの行を更新します。明らかな解決策は pl/sql でループすることですが、SQL のみの解決策があるかどうかを判断しようとしています。

UPDATE ldl.clens le
   SET master_song_id =
      (SELECT cf.song_id#
         FROM lt.master_songs cf
        WHERE     le.lot_id = cf.lot_id
              AND song_id#_fk =
                     (SELECT msc_songs.song_id#
                        FROM lt.msc_songs
                       WHERE msc_songs.song_name = le.song_name)
---- AND ROWNUM < 2
);

すべてのヘルプと提案を深く感謝します!

MD

4

1 に答える 1

0

テーブル間の関係を把握できたかどうかはわかりませんが、把握できた場合は、以下を使用できますUPDATE

UPDATE ldl.clens le
   SET master_song_id =
      (SELECT cf.song_id#
         FROM lt.master_songs cf
          JOIN lt.msc_songs ms ON (cf.song_id#_fk = ms.song_id#)
         WHERE
              ms.song_name = le.song_name
          AND le.lot_id = cf.lot_id)
;

それは機能msc_songs.song_namemaster_songs.lot_id、一意のmaster_songs.song_id#.

于 2013-11-06T18:01:23.957 に答える