如何在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';