Cómo escribir ACTUALIZACIÓN SQL con alias de tabla en SQL Server 2008?


Tengo un muy básico UPDATE SQL -

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

Esta consulta se ejecuta bien en Oracle, Derby, MySQL - pero falla en SQL server 2008 con el siguiente error:

"Msg 102, Nivel 15, Estado 1, Línea 1 Sintaxis incorrecta cerca de 'Q'."

Si elimino todas las ocurrencias del alias, "Q" de SQL, entonces funciona.

Pero necesito usar el alias.

Author: DineshDB, 2011-02-13

2 answers

La sintaxis para usar un alias en una instrucción update en SQL Server es la siguiente:

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

El alias no debería ser necesario aquí.

 304
Author: Mark Byers,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-02-13 00:07:16

Siempre puede tomar el enfoque CTE, (Expresión Tabular Común).

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

UPDATE updateCTE
SET TITLE = 'TEST';
 14
Author: Ryk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-02-13 23:04:31