J'ai 2 tables J'essaie d'exécuter ce code, mais cela continue de me donner des erreurs. Quelqu'un peut-il me dire ce qui pourrait être faux? P> utilisateurs code> et
commandes code>. Touche principale de
utilisateurs code> est
userid code>, que j'ai défini comme clé étrangère dans la table code> commandes code>. J'ai ajouté une nouvelle colonne de
nom d'utilisateur code> à
commandes code>. Je veux importer
Nom d'utilisateur code> à partir des utilisateurs code> code>.
5 Réponses :
Ce n'est pas la bonne syntaxe Vous devez commencer à utiliser alias code> pour les références de tables lorsque vous trouverez plus d'une table impliquée dans votre requête. L'utilisation des noms d'alias rend la requête plus lisible. P> p>
Vous êtes des commandes manquantes Nom de la table
UPDATE Orders SET Orders.UserName = Users.UserName from Orders INNER JOIN Users ON Orders.UserId = Users.UserId ;
No Vous pouvez utiliser Mettre à jour code> avec
Joindre interne code>, veuillez ré-écrire votre requête comme suit:
interne rejoindre code> seulement après < Code> à partir de code> clause p>
Votre structure de requête doit être comme ci-dessous: de sorte que votre requête réelle doit être comme ci-dessous: P> UPDATE Orders SET Orders.UserName = Users.UserName
FROM Users WHERE Orders.UserId = Users.UserId
J'aime bien la version CTE de la mise à jour ici, car elle nous permet d'expression de la logique de jointure, car nous le ferions dans un choix, sans aucune confusion potentielle:
WITH cte AS ( SELECT o.UserName AS user_old, u.UserName AS user_new FROM Orders o INNER JOIN Users u ON u.UserId = o.UserId ) UPDATE cte SET user_old = user_new;
@wakanada Ma réponse devient utile dans les cas où il est plus facile de simplement écrire un Select. Dans ce cas, la réponse que votre acceptation n'est pas trop verbeuse, mais parfois une mise à jour peut être.