gpt4 book ai didi

sql - MySQL 嵌套集 - 如何查找节点的父节点?

转载 作者:行者123 更新时间:2023-11-29 15:41:56 26 4
gpt4 key购买 nike

我有您的常规嵌套集层次结构类型设置,其中包含以下列:

表名:

myset

列:

id, name, lft, rgt

有人知道确定节点的父级的查询吗?

我读到了一些地方,在表中添加一个 parent_id 列来跟踪这一点很方便,但这似乎是多余的,而且似乎可能与嵌套的不同步如果在添加/删除/移动集合中的任何内容时查询执行不正确,则设置。

最佳答案

看看this question 。它和你的很相似。我在那里发布了您可能需要的查询。

SELECT title, (SELECT TOP 1 title 
FROM tree t2
WHERE t2.lft < t1.lft AND t2.rgt > t1.rgt
ORDER BY t2.rgt-t1.rgt ASC) AS parent
FROM tree t1
ORDER BY rgt-lft DESC

希望有您需要的内容。

如下表:

+-------------+----------------------+-----+-----+
| category_id | name | lft | rgt |
+-------------+----------------------+-----+-----+
| 1 | ELECTRONICS | 1 | 20 |
| 2 | TELEVISIONS | 2 | 9 |
| 3 | TUBE | 3 | 4 |
| 4 | LCD | 5 | 6 |
| 5 | PLASMA | 7 | 8 |
| 6 | PORTABLE ELECTRONICS | 10 | 19 |
| 7 | MP3 PLAYERS | 11 | 14 |
| 8 | FLASH | 12 | 13 |
| 9 | CD PLAYERS | 15 | 16 |
| 10 | 2 WAY RADIOS | 17 | 18 |

它产生输出:

title                | parent
----------------------------------------------
ELECTRONICS | NULL
PORTABLE ELECTRONICS | ELECTRONICS
TELEVISIONS | ELECTRONICS
MP3 PLAYERS | PORTABLE ELECTRONICS
FLASH | MP3 PLAYERS
CD PLAYERS | PORTABLE ELECTRONICS
2 WAY RADIOS | PORTABLE ELECTRONICS
TUBE | TELEVISIONS
LCD | TELEVISIONS
PLASMA | TELEVISIONS

关于sql - MySQL 嵌套集 - 如何查找节点的父节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57544255/

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