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 s'exécute correctement dans Oracle, Derby, MySQL - mais il échoue dans SQL server 2008 avec l'erreur suivante:

"Msg 102, Niveau 15, État 1, Ligne 1 syntaxe incorrecte près de 'Q'."

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

Mais je dois utiliser l'alias.

152
demandé sur DineshDB 2011-02-13 02:57:22

2 réponses

La syntaxe pour utiliser un alias dans une instruction update sur SQL Server est la suivante:

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

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

304
répondu Mark Byers 2011-02-13 00:07:16

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

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

UPDATE updateCTE
SET TITLE = 'TEST';
14
répondu Ryk 2011-02-13 23:04:31