私は非常に基本的なUPDATE SQL
を持っています-
UPDATE HOLD_TABLE Q SET Q.TITLE = 'TEST' WHERE Q.ID = 101;
このクエリはOracle
、Derby
、MySQL
で正常に実行されますが、 sQL Server 2008で失敗する 次のエラーで:
「メッセージ102、レベル15、状態1、行1 'Q'付近の構文が正しくありません。」
SQLからエイリアス「Q」をすべて削除すると、機能します。
しかし、エイリアスを使用する必要があります。
SQL Serverの更新ステートメントでエイリアスを使用するための構文は次のとおりです。
UPDATE Q
SET Q.TITLE = 'TEST'
FROM HOLD_TABLE Q
WHERE Q.ID = 101;
ただし、エイリアスはここでは必要ありません。
CTE 、(Common Tabular Expression)、アプローチをいつでも使用できます。
;WITH updateCTE AS
(
SELECT ID, TITLE
FROM HOLD_TABLE
WHERE ID = 101
)
UPDATE updateCTE
SET TITLE = 'TEST';