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

时间:2010-12-13 03:24:47

标签: sql sql-server sql-update

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

UPDATE Table i2
SET value = 0
WHERE EXISTS (SELECT 1 FROM Table i1 WHERE i2.ID = i1.ID+1)

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

2 个答案:

答案 0 :(得分:6)

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

UPDATE i2
SET value = 0
FROM Table i2
WHERE EXISTS (SELECT 1 FROM Table i1 WHERE i2.ID = i1.ID+1)

答案 1 :(得分:0)

“SET”子句中的“值”是SQL的关键字。此外,您的逻辑似乎正在清除除第一行之外的所有“值”,这是您的目标吗?