Как написать UPDATE SQL с псевдонимом таблицы в SQL Server 2008? - PullRequest
180 голосов
/ 13 февраля 2011

У меня очень простой 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 ]

357 голосов
/ 13 февраля 2011

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

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

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

17 голосов
/ 14 февраля 2011

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

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

UPDATE updateCTE
SET TITLE = 'TEST';
...