SQL Update语句中如何访问当前被更新行的PathName字段
解决方法
你需要给外层待更新的[Values]表设置别名,即可在子查询中通过别名引用当前更新行的PathName字段,修改后的SQL如下:
UPDATE [Values] AS v SET ACIdent = ( SELECT b.valueIdent FROM [Values] AS b WHERE b.SampleIdent = 0 AND b.PathName = v.PathName ) WHERE v.ValueIdent = 614
注意事项
- 请确保满足
b.SampleIdent = 0和b.PathName匹配条件的记录唯一,否则会触发「子查询返回多行」的报错。如果业务场景下确实存在多条匹配记录,可以根据需求加上TOP 1或者MAX()/MIN()这类聚合函数处理返回值。 - 部分数据库(如MySQL)支持省略别名前的
AS关键字,写成UPDATE [Values] v也可正常执行。
内容的提问来源于stack exchange,提问作者Hias
相关产品推荐
相关产品推荐

