web-dev-qa-db-ja.com

table1とtable2の間の複合結合に基づいてfield1.table1を更新します-Oracle

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)
1
Aakash
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のすべての行が更新されます。

1
Marty