web-dev-qa-db-ja.com

SQL Server 2008でテーブルエイリアスを使用してUPDATE SQLを書く方法は?

私は非常に基本的なUPDATE SQLを持っています-

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

このクエリはOracleDerbyMySQLで正常に実行されますが、 sQL Server 2008で失敗する 次のエラーで:

「メッセージ102、レベル15、状態1、行1 'Q'付近の構文が正しくありません。」

SQLからエイリアス「Q」をすべて削除すると、機能します。

しかし、エイリアスを使用する必要があります。

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