gpt4 book ai didi

sql - PostgreSQL ltree 查找给定标签(不是路径)的所有祖先

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

我有一个包含 ltree 路径列的表。在我的层次结构中,标签的路径是唯一的,这意味着每个标签都有一个父标签。换句话说,表中没有两个以相同标签结尾的 ltree 路径。

我有一个 ltree 标签,假设是“C”。

我可以使用以下查询找到该标签的所有后代行:

select * from myTree where path ~ '*.C.*';

这工作正常并给出了正确的子树。

现在我需要执行查询以查找此给定标签的所有祖先行。我的意思是,如果表中有例如 3 行标签为“A”、“A.B”、“A.B.C”,我想获取路径为“A”和“A.B”的行(可能包括“A.B.C”本身,现在没关系)。

如果我知道“C”(上例中的“A.B.C”)的完整路径,那么使用 @> 运算符即可轻松完成任务。但是,现在我只知道“C”,但我仍然想用一个查询来完成任务。有什么办法吗?

最佳答案

SELECT
*
FROM
myTree
WHERE
path @> (
SELECT
path
FROM
myTree
WHERE
label = 'C'
);

关于sql - PostgreSQL ltree 查找给定标签(不是路径)的所有祖先,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27146802/

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