是否可以在更新语句中使用相同的表两次?

Mar*_*ret 4 sql sql-server sql-update

我正在尝试按以下方式编写查询:

UPDATE Table i2
SET value = 0
WHERE EXISTS (SELECT 1 FROM Table i1 WHERE i2.ID = i1.ID+1)
Run Code Online (Sandbox Code Playgroud)

问题是我得到"i2'附近的语法错误." 我猜这是因为它不喜欢给正在更新的表提供昵称,但如果是这样的话,我该如何引用呢?

Joh*_*ock 6

更新不仅必须直接在表上,还可以使用From子句中引用的表中的别名.

UPDATE i2
SET value = 0
FROM Table i2
WHERE EXISTS (SELECT 1 FROM Table i1 WHERE i2.ID = i1.ID+1)
Run Code Online (Sandbox Code Playgroud)