別テーブルの値で対象テーブルの値を更新 [Oracle]
テーブルの値を更新する際に、別のテーブルからもってくる。oracleでやってみました。
TABLE_A
KEY_A number(10,0)
KEY_B number(10,0)
COL1 varchar2(10)
TABLE_B
KEY_B number(10,0)
COL1 varchar2(10)
TABLE_AのCOL1にTABLE_BのCOL1の値をセットする。
【誤ったやりかた】
update TABLE_A a
set COL1 = (select b.COL1 from TABLE_A a,TABLE_B b where a.KEY_B=b.KEY_B);
こんなエラーが発生
SQLエラー: ORA-01427: 単一行副問合せにより2つ以上の行が戻されます
01427. 00000 - "single-row subquery returns more than one row"
副問合せ内のfromに更新対象テーブルを記載してはダメ!
【正しいやり方】
update TABLE_A a
set COL1 = (select b.COL1 from TABLE_B b where a.KEY_B=b.KEY_B);
これで解決しました。
2016-08-25 11:39
nice!(0)
コメント(0)
トラックバック(0)
コメント 0