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

发布于 2024-10-07 14:26:10 字数 211 浏览 1 评论 0原文

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

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

问题是我收到“'i2'附近的语法不正确”。我猜这是因为它不喜欢给正在更新的表起一个昵称,但如果是这样的话,我应该如何引用它呢?

I'm trying to write a query along these lines:

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

The problem is that I'm getting "Incorrect syntax near 'i2'." I'm guessing this is because it doesn't like giving a nickname to a table being updated, but if that's the case, how am I supposed to reference it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

如此安好 2024-10-14 14:26:10

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

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

An update does not only have to be on a table directly you can use an alias from a table referenced in the From clause.

UPDATE i2
SET value = 0
FROM Table i2
WHERE EXISTS (SELECT 1 FROM Table i1 WHERE i2.ID = i1.ID+1)
温馨耳语 2024-10-14 14:26:10

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

The "value" within the "SET" clause is a keyword of SQL.Further, your logic seems to be clearing all the "value"s except the first row, is it your goal?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文