Как написать UPDATE SQL с псевдонимом таблицы в SQL Server 2008?

У меня очень простой UPDATE SQL -

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

Этот запрос отлично работает в Oracle, Derby, My-Sql, но он не работает на SQL Server 2008 со следующей ошибкой:         "Msg 102, уровень 15, состояние 1, строка 1        Неверный синтаксис рядом с" Q".

Если я удалю все вхождения псевдонима "Q" из SQL, тогда он будет работать.

Но мне нужно использовать псевдоним.

Ответ 1

Синтаксис использования псевдонима в инструкции обновления на SQL Server выглядит следующим образом:

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

Здесь не обязательно здесь использовать псевдоним.

Ответ 2

Вы всегда можете использовать CTE, (общее табличное выражение), подход.

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

UPDATE updateCTE
SET TITLE = 'TEST';