如何写更新SQL表别名在SQL Server 2008?

我有一个非常基本的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”的所有出现,那么它就可以工作了。

但我需要用化名。

255308 次浏览

在SQL Server上的update语句中使用别名的语法如下:

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

但是在这里不需要使用别名。

你总是可以采用CTE(公共表格表达式)方法。

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


UPDATE updateCTE
SET TITLE = 'TEST';