我想在一个表中更新一个列,在其他表上进行连接,例如:
UPDATE table1 a
INNER JOIN table2 b ON a.commonfield = b.[common field]
SET a.CalculatedColumn= b.[Calculated Column]
WHERE
b.[common field]= a.commonfield
AND a.BatchNO = '110'
但它在抱怨:
警报170,15层,状态1,2号线
第2行:'a'附近的语法错误。
这里出了什么问题?
Aaron给出的答案是完美的:
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';
只是想补充一下为什么在SQL Server中,当我们在更新表时尝试使用表的别名时,会出现这个问题,下面提到的语法总是会给出错误:
update tableName t
set t.name = 'books new'
where t.id = 1
如果您正在更新单个表或在使用连接进行更新,则Case可以是任何。
虽然上面的查询在PL/SQL中可以很好地工作,但在SQL Server中不行。
在SQL Server中使用表别名更新表的正确方法是:
update t
set t.name = 'books new'
from tableName t
where t.id = 1
希望它能帮助大家为什么错误会出现在这里。