Oracle 11gでupdateステートメントを実行したいのですが、次のエラーで失敗します。
SQLエラー:ORA-01427:単一行サブクエリが複数の行01427を返します。00000-「単一行サブクエリが複数の行を返します」
これが私が擬似コードでやろうとしていることです:
Update Table1
Set Flag_Column=1
Where
Table1.ColumnX=Table2.ColumnX
and
Table1.ColumnY=Table2.ColumunY
OracleSQLでこれを行う方法はありますか?
私のコードは次のようになります:
update Table1
set Flag_Column=1
where ColumnX=
(select distinct Table1.ColumnX
from Table1, Table2
where Table1.ColumnX=Table2.ColumnX
and Table1.ColumnY=Table2.ColumnY)
and ColumnY=
(select distinct Table1.ColumnY
from Table1, Table2
where Table1.ColumnX=Table2.ColumnX
and Table1.ColumnY=Table2.ColumnY)
update table1 set flag_column = 1
where exists (select 1 from table2
where table1.columnx = table2.columnx
and table1.columny = table2.columny)
これにより、テーブル2にx、y列の組み合わせが存在するテーブル1のすべての行が更新されます。