Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Mettre à jour avec une jointure, un groupe par et avoir

Votre instruction de mise à jour d'origine contient GROUP BY et HAVING, qui ne sont pas autorisés dans la syntaxe de l'instruction UPDATE. Voici un lien vers un diagramme de syntaxe :UPDATE (Transact-SQL) .

Votre deuxième version a le GROUP BY et HAVING dans le cadre d'une table dérivée, qui est autorisé.

Donc, oui :vous avez eu une erreur de syntaxe.

Incidemment, je suis d'accord avec @bluefeet :un CTE à la place d'un tableau dérivé rendrait votre mise à jour plus facile à lire et à comprendre. Une petite chose, mais cela peut faire une grande différence dans la facilité d'entretien.