使用SQLServer中的联接更新表?

使用SQLServer中的联接更新表?

我想更新表中的列,在其他表上进行连接,例如:

UPDATE table1 a 
INNER JOIN table2 b ON a.commonfield = b.[common field] SET a.CalculatedColumn= b.[Calculated Column]WHERE 
    b.[common field]= a.commonfieldAND a.BatchNO = '110'

但这是在抱怨:

MSG 170,15级,状态1,第2行
第2行:a附近不正确的语法。

这里怎么了?


凤凰求蛊
浏览 747回答 3
3回答

万千封印

就像这样:begin tran     UPDATE a      SET a.CalculatedColumn= b.[Calculated Column]     FROM table1 a INNER JOIN table2 b ON a.commonfield = b.[common field]      WHERE a.BatchNO = '110'commit tran

跃然一笑

亚伦上面的回答是完美的:UPDATE a  SET a.CalculatedColumn = b.[Calculated Column]   FROM Table1 AS a  INNER JOIN Table2 AS b  ON a.CommonField = b.[Common Field]   WHERE a.BatchNo = '110';当我们在更新表时尝试使用表的别名时,只想补充一下为什么在SQLServer中会出现此问题,下面提到的语法总是会出现错误:update tableName t  set t.name = 'books new' where t.id = 1如果您正在更新单个表或在使用联接时更新,则大小写可以是任意的。虽然上面的查询在PL/SQL中运行良好,但在SQLServer中却不起作用。在SQLServer中使用表别名时更新表的正确方法是:update t  set t.name = 'books new' from tableName t  where t.id = 1希望它能帮助每个人,为什么错误会出现在这里。
打开App,查看更多内容
随时随地看视频慕课网APP