J'essaie de mettre à jour la table A avec les données de la table B. Je pensais pouvoir le 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?
Votre requête ne fonctionne pas car vous n'avez pas de clauseFROMqui spécifie 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 pour plus de clarté, c.-à-d.
UPDATE A
SET A.NAME = B.NAME
FROM TableNameA A
INNER JOIN TableName B ON
A.ID = B.ID
Pour Microsoft Access (ne pas rire!) ...
UPDATE TableA A
INNER JOIN TableB B
ON A.ID = B.ID
SET A.Name = B.Name
Je me grattais la tête, ne parvenant pas à obtenir le travail de syntaxe Join de John Sansom, du moins dans 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
Les réponses n'ont pas fonctionné pour moi avec postgresql 9.1+
C’est ce que j’avais à faire (vous pouvez en savoir plus dans le manuel ici )
UPDATE schema.TableA as A
SET "columnA" = "B"."columnB"
FROM schema.TableB as B
WHERE A.id = B.id;
Vous pouvez omettre le schéma si vous utilisez le schéma par défaut pour les deux tables.