2009-06-16 4 views
4

ある表の複数の列を別の表の値に基づいて更新したいとします。別の表(Oracle)のTABLE内の複数の列を更新する

私はだと思います。私はT-SQLで、私が欲しいことをする(以下でテストしていない)更新文を書く方法を知っています。問題は、これをOracleデータベース用に翻訳しようとしていることです。誰でもOracleで次のようにする方法を知っていますか?

UPDATE oldauth SET 
    AUTHUNIQUENAME=newauth.AUTHUNIQUENAME 
    DESCRIPTION=newauth.DESCRIPTION 
    MAPPINGAUTHNAME=newauth.MAPPINGAUTHNAME 
FROM 
(SELECT * FROM USERS1 WHERE AUTHSOURCEID=100) oldauth 
LEFT JOIN 
(SELECT * FROM USERS2 WHERE AUTHSOURCEID=200) newauth 
ON 
oldauth.AUTHUSERNAME=newauth.AUTHUSERNAME; 

答えて

2
MERGE 
INTO (
     SELECT * 
     FROM users1 
     WHERE AUTHSOURCEID=100 
     ) oldauth 
USING (
     SELECT * 
     FROM users2 
     WHERE AUTHSOURCEID=200 
     ) newauth 
ON  oldauth.AUTHUSERNAME=newauth.AUTHUSERNAME 
WHEN MATCHED THEN 
UPDATE 
SET AUTHUNIQUENAME=newauth.AUTHUNIQUENAME, 
     DESCRIPTION=newauth.DESCRIPTION, 
     MAPPINGAUTHNAME=newauth.MAPPINGAUTHNAME 
関連する問題