Как написать обновление 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 152

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';