2009-06-16 15 views
4

Je souhaite mettre à jour plusieurs colonnes dans une table en fonction des valeurs d'une autre table.Mise à jour de plusieurs colonnes dans une TABLE à partir d'une autre table (Oracle)

I pense Je sais comment écrire une instruction de mise à jour dans T-SQL qui fait ce que je veux (ne l'ai pas testé ci-dessous). Le problème est que je suis en train de traduire cela pour une base de données Oracle. Est-ce que quelqu'un sait comment faire ce qui suit dans 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; 

Répondre

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 
Questions connexes