Mise à JOUR de la ligne lorsque la ligne correspondante existe dans une autre table
J'ai besoin de mettre à jour un champ sur une table pour être vrai seulement si une ligne correspondante existe dans une autre table, pour toutes les lignes où la colonne est actuellement la valeur null dans la table principale.
C'est une description de ce que je veux réaliser:
UPDATE [LenqReloaded].[dbo].[Enquiry] A
SET [ResponseLetterSent] = 1
WHERE [ResponseLetterSent] IS NULL
AND EXISTS
(
SELECT * FROM [LenqReloaded].[dbo].[Attachment] B
WHERE A.[EnquiryID] = B.[EnquiryID]
)
Ce n'est pas syntaxiquement correct.
Je ne peux pas le code par l'intermédiaire d'une SI EXISTE... car je n'ai pas l' [EnquiryID] sans lire les données de la table.
Comment dois-je formater mon instruction de mise à JOUR?
OriginalL'auteur Val M | 2009-12-10
Vous devez vous connecter pour publier un commentaire.
Vous n'étiez pas très loin...
OriginalL'auteur AdaTheDev
Vous avez besoin d'utiliser une jointure dans votre mise à jour:
OriginalL'auteur Matt Wrock
Cela semble contre-intuitif, mais vous devez établir un alias de la table dans une clause from, mais utiliser cet alias dans la Clause de mise à Jour...
OriginalL'auteur Charles Bretana
La chose vous manque, c'est le " de " la clause, qui est un t-sql extension - c'est le seul moyen pour assigner un alias de la table mise à jour
OriginalL'auteur Ray