我有一个非常基本的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语句中使用别名的语法如下:

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';