Jak napisać UPDATE SQL z aliasem tabeli w SQL Server 2008?

Mam bardzo podstawowe UPDATE SQL-

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

To zapytanie działa poprawnie w Oracle, Derby, MySQL - ale to nie działa w SQL server 2008 z następującym błędem:

"Msg 102, Poziom 15, Stan 1, linia 1 Nieprawidłowa składnia w pobliżu 'Q'."

Jeśli usunę wszystkie wystąpienia aliasu " Q " z SQL-a to zadziała.

Ale muszę użyć pseudonimu.
Author: DineshDB, 2011-02-13

2 answers

Składnia użycia aliasu w instrukcji update na serwerze SQL jest następująca:

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

Alias nie powinien być tu jednak potrzebny.

 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/doraprojects.net/template/agent.layouts/content.php on line 54
2011-02-13 00:07:16

Zawsze możesz zastosować podejście CTE , (Common Tabular Expression).

;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/doraprojects.net/template/agent.layouts/content.php on line 54
2011-02-13 23:04:31