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.
152
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
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
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