2016-05-26 13 views
1

私はOracleデータベースを使用しており、他のいくつかのテーブルのフィールドを更新する状況があります。私の問題は、指定された条件の代わりにすべてのレコードを更新することです。 たとえば、ADDRESSテーブルからEMPLOYEEテーブルのperm_addressとtemp_addressを更新しようとしています。今、私は以下のクエリを使用しています。しかし、それはすべてのレコードを更新しています。Oracle:異なるテーブルから複数の列を更新するには?

UPDATE EMPLOYEE EMP 
    SET (EMP.PERM_ADDRESS, EMP.TEMP_ADDRESS) = 
      (SELECT ADDR.PERM_ADDR,ADDR.TEMP_ADDR 
      FROM ADDRESS ADDR 
      WHERE ADDR.ID=EMP.ADDRESS_ID 
     ); 

どのようにこのような状況を処理するには?通常、複数のテーブルからソーステーブルに更新を処理する方法はありますか?

事前に感謝します....

答えて

3

WHERE句のみ一致するレコードを更新するために追加します。

UPDATE EMPLOYEE EMP 
    SET (EMP.PERM_ADDRESS, EMP.TEMP_ADDRESS) = 
      (SELECT ADDR.PERM_ADDR, ADDR.TEMP_ADDR 
      FROM ADDRESS ADDR 
      WHERE ADDR.ID = EMP.ADDRESS_ID 
     ) 
    WHERE EXISTS (SELECT 1 FROM ADDRESS ADDR WHERE ADDR.ID = EMP.ADDRESS_ID); 
関連する問題