49 votes

Mise à jour avec deux tables?

J'essaie de mettre à jour la table A avec les données de la table B. Je pensais pouvoir faire quelque chose comme:

  UPDATE A
 SET A.name = B.name
 WHERE A.id = B.id
 

mais hélas, cela ne fonctionne pas.

Quelqu'un a une idée de comment je peux faire ça?

78voto

John Sansom Points 20087

Votre requête ne fonctionne pas car vous n'avez pas de clause FROM spécifiant les tables que vous aliasez via A / B.

S'il vous plaît essayez d'utiliser ce qui suit:

 UPDATE A
    SET A.NAME = B.NAME
FROM TableNameA A, TableNameB B
WHERE A.ID = B.ID
 

Personnellement, je préfère utiliser une syntaxe de jointure plus explicite, par exemple

 UPDATE A
    SET A.NAME = B.NAME
FROM TableNameA A
    INNER JOIN TableName B ON 
    	A.ID = B.ID
 

17voto

Nicolas Points 180

Pour Microsoft Access (ne pas rire!) ...

 UPDATE TableA A
    INNER JOIN TableB B
    ON A.ID = B.ID
SET A.Name = B.Name
 

10voto

gus Points 303

Je me grattais la tête, ne parvenant pas à obtenir le travail de syntaxe Join de John Sansom, au moins en MySQL 5.5.30 InnoDB .

Il s'avère que cela ne fonctionne pas.

 UPDATE A 
    SET A.x = 1
FROM A INNER JOIN B 
        ON A.name = B.name
WHERE A.x <> B.x
 

Mais cela fonctionne:

 UPDATE A INNER JOIN B 
    ON A.name = B.name
SET A.x = 1
WHERE A.x <> B.x
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X