加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-13 16:12:52 所属栏目:百科 来源:网络整理
导读:我有一个带有ltree路径列的表.在我的层次结构中,标签的路径是唯一的,这意味着每个标签都只有一个父标签.换句话说,表中没有两个以相同标签结尾的ltree路径. 我有一个ltree标签,让我们说“C”. 我可以使用以下查询找到此标签的所有后代行: select * from myTr
我有一个带有ltree路径列的表.在我的层次结构中,标签的路径是唯一的,这意味着每个标签都只有一个父标签.换句话说,表中没有两个以相同标签结尾的ltree路径.

我有一个ltree标签,让我们说“C”.

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

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

这工作正常,并提供正确的子树.

现在我需要实现查询以查找此给定标签的所有祖先行.我的意思是如果表中有3行标有“A”,“AB”,“ABC”,我想得到路径为“A”和“AB”的行(可能包括“ABC”本身,现在没关系).

如果我知道“C”的完整路径(上例中的“A.B.C”)那么使用@>可以轻松完成任务.操作符.但是,现在我只知道“C”,我仍然希望通过单个查询来完成任务.有没有办法做到这一点?

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读