gpt4 book ai didi

mysql - 带内连接的 SQL 更新

转载 作者:行者123 更新时间:2023-11-29 07:04:58 25 4
gpt4 key购买 nike

我有一个记录表,它有一个 self 关系。

另外 - 为了使搜索更容易 - 我有一个标志,它确定一条记录已被引用,因此该行现在“已过时”并且仅用于审计目的:

CREATE TABLE Records
(
RecordID INT(5) NOT NULL,
Replaces INT(5) NULL,
Obsolete INT(1) NOT NULL
)

RecordID 是 PK,Replaces 链接到现在已被替换的以前的 RecordID,Obsolete 是冗余信息,它只是说另一张唱片取代了这张唱片。它只会让搜索变得更容易。 table 很大。这些只是其中的 3 列。

唯一的问题是:系统中的一个查询存在拼写错误,因此对于一小组行,Obsolete 值未设置为 1(真)。

此查询将显示所有 Obsolete 等于 0 的记录,应该等于 1:

   SELECT *
FROM Records AS rec1
LEFT JOIN Records AS rec2
ON rec1.Replaces = rec2.RecordID
WHERE rec2.RecordID IS NOT NULL
AND rec2.Obsolete = 0;

现在我需要运行 UPDATE 将所有 req2.Obsolete 从 0 更改为 1,但我不确定如何使用 INNER JOIN 编写查询。

最佳答案

您不需要内部联接。由于您的查询已经返回需要更新的记录,只需执行以下操作:

Update Records
set Obsolete=1 where
RecordID in (
SELECT rec2.RecordID
FROM Records AS rec1
LEFT JOIN Records AS rec2
ON rec1.Replaces = rec2.RecordID
WHERE rec2.RecordID IS NOT NULL
AND rec2.Obsolete = 0
)

关于mysql - 带内连接的 SQL 更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7884410/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com