Как написать обновление SQL с псевдонимом таблицы в SQL Server 2008?
у меня есть очень простой UPDATE SQL
-
UPDATE HOLD_TABLE Q SET Q.TITLE = 'TEST' WHERE Q.ID = 101;
этот запрос работает нормально в Oracle
,Derby
,MySQL
- но сбой в SQL server 2008
со следующей ошибкой:
"Msg 102, Уровень 15, состояние 1, строка 1 неверный синтаксис рядом с 'Q'."
если я удалю все вхождения псевдонима, " Q " из SQL, то он работает.
но мне нужно использовать псевдоним.
2 ответа:
синтаксис для использования псевдонима в инструкции update на SQL Server выглядит следующим образом:
UPDATE Q SET Q.TITLE = 'TEST' FROM HOLD_TABLE Q WHERE Q.ID = 101;
псевдоним не должен быть необходимым, хотя здесь.
вы всегда можете забрать CTE, (общее табличное выражение), подход.
;WITH updateCTE AS ( SELECT ID, TITLE FROM HOLD_TABLE WHERE ID = 101 ) UPDATE updateCTE SET TITLE = 'TEST';