如何在SQL Server 2008中使用Table别名编写UPDATE SQL?

我有一个非常基本的更新SQL –

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

此查询在Oracle,Derby,My-Sql中运行正常 – 但在SQL Server 2008中失败,出现以下错误: “Msg 102,Level 15,State 1,Line 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';