Mettre à jour le tableau en fonction d'une autre table
Je suis en train de mettre à jour une colonne dans une table en fonction d'une autre colonne d'une autre table.
UPDATE eval e
SET rank = (SELECT p.desc
FROM Position p
WHERE p.id = e.faculty
AND p.date >= '2011-05-20'
)
p.id
et e.faculty
correspondent. Je veux mettre à jour rang avec p.desc
si les id sont pas les mêmes. (e.faculty
et p.id
)
Toute aide sera grand! 🙂
- Ce SGBD que vous utilisez?
Vous devez vous connecter pour publier un commentaire.
Essayez ceci pour SQL Server:
ou si vous avez besoin d'un alias sur la table de base (pour quelque raison que ce soit), vous devez faire ceci:
UPDATE @Y SET Field = X.Field FROM @X AS X WHERE @Y.Key = X.Key
. Je serais normalement utiliserUPDATE Y SET Field = X.Field FROM @Y AS Y INNER JOIN @X AS X ON Y.Key = X.Key
, mais c'est un peu plus prolixe.Vous avez besoin d'une restriction dans la forme d'un
WHERE
clause; si vous utilisezEXISTS
vous pouvez, en se basant sur vous sous-requête scalaire par exempleNote des objectifs de la
UPDATE
sur la table de baseeval
plutôt que le nom de corrélatione
. Cela fait beaucoup plus de sens quand vous pensez à un SQLUPDATE
en termes de relationnel affectation c'est à dire que vous ne voulez pas céder àe
parce qu'elle (contrairement à la table de base) passe hors de portée!