gpt4 book ai didi

mysql - 尝试更新与同一个表中的多个其他行相关的表

转载 作者:行者123 更新时间:2023-11-30 22:58:41 25 4
gpt4 key购买 nike

我有一个表,该表使用具有典型左列和右列(trLeft 和 trRight)的嵌套集表示树。为了优化,我还在树中包含行的级别,即它在树 ROOT 之前拥有的父项的数量。

在嵌套集中,A 行的父级是所有其他 B 行,其中 B.trLeft < A.trLeft AND B.trRight > A.trRight .

因此计算这些行将返回级别,导致以下更新查询开始,以便使用正确的级别更新所有行:

UPDATE Groups AS g1 SET g1.trLevel = ( 
SELECT COUNT(*) FROM Groups AS g2 WHERE g2.trLeft < g1.trLeft AND g2.trRight > g1.trRight ) ;

但这会导致错误 1093“您不能为 FROM 子句中的更新指定目标表‘g1’。

有办法解决这个问题吗?

最佳答案

您必须在选择中嵌套计数。我认为这会起作用:

已编辑:更新查询

UPDATE Groups SET trLevel = (
SELECT * FROM
(
SELECT COUNT(*) FROM Groups g2 inner join Groups g1 on g2.unique_id = g1.unique_id WHERE g2.trLeft < g1.trLeft AND g2.trRight > g1.trRight
) AS my_count
) ;

AS my_count 很重要,因为它告诉 MySQL 根据这个查询创建一个 tmp 表。然后将 my_count tmp 表用作 UPDATE 语句的源。

关于mysql - 尝试更新与同一个表中的多个其他行相关的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25062195/

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