it-swarm-ru.tech

Как написать UPDATE 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, тогда он работает.

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

179
javauser71

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

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

Псевдоним не должен быть здесь необходимым, хотя.

356
Mark Byers

Вы всегда можете использовать CTE , (Common Tabular Expression), подход.

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

UPDATE updateCTE
SET TITLE = 'TEST';
17
Ryk