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