gpt4 book ai didi

php - 深入 MYSQL 和闭包表树

转载 作者:可可西里 更新时间:2023-11-01 06:36:24 37 4
gpt4 key购买 nike

在向树中插入新节点时,如何填充闭包表的深度/长度列?

ancestor 和 descendant 中的值是来自另一个表的 ID,表示要以树结构排列的页面。

关闭表:

ancestor    descendant     depth
1 1 0
1 2 1
1 3 1
1 4 1
2 2 0
3 3 0
4 4 0

这将正确插入祖先和后代,但我不确定如何填充深度列插入查询:

INSERT INTO closure_tree_path (ancestor, descendant)
SELECT ancestor, '{$node_id}' FROM closure_tree_path
WHERE descendant = '{$parent_id}'
UNION ALL SELECT '{$node_id}', '{$node_id}';

解决此问题的最佳方法是什么?非常感谢!

最佳答案

将 depth+1 添加到第一个 SELECT。

INSERT INTO closure_tree_path (ancestor, descendant, depth)
SELECT ancestor, '{$node_id}', depth+1 FROM closure_tree_path
WHERE descendant = '{$parent_id}'
UNION ALL SELECT '{$node_id}', '{$node_id}', 0;

关于php - 深入 MYSQL 和闭包表树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23030755/

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