web-dev-qa-db-fra.com

Comment écrire UPDATE SQL avec un alias de table dans SQL Server 2008?

J'ai un très basique UPDATE SQL -

UPDATE HOLD_TABLE Q SET Q.TITLE = 'TEST' WHERE Q.ID = 101;

Cette requête fonctionne correctement dans Oracle, Derby, MySQL - mais échoue dans SQL Server 2008 avec l'erreur suivante:

"Msg 102, Niveau 15, Etat 1, Ligne 1 Syntaxe incorrecte près de 'Q'."

Si je supprime toutes les occurrences de l'alias, "Q" à partir de SQL, cela fonctionne.

Mais je dois utiliser l'alias.

186
javauser71

La syntaxe d'utilisation d'un alias dans une instruction de mise à jour sur SQL Server est la suivante:

UPDATE Q
SET Q.TITLE = 'TEST'
FROM HOLD_TABLE Q
WHERE Q.ID = 101;

L'alias ne devrait pas être nécessaire ici cependant.

367
Mark Byers

Vous pouvez toujours adopter l'approche CTE , (Expression tabulaire commune).

;WITH updateCTE AS
(
    SELECT ID, TITLE 
    FROM HOLD_TABLE
    WHERE ID = 101
)

UPDATE updateCTE
SET TITLE = 'TEST';
17
Ryk