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

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

概述我有一个带有ltree路径列的表.在我的层次结构中,标签的路径是唯一的,这意味着每个标签都只有一个父标签.换句话说,表中没有两个以相同标签结尾的ltree路径. 我有一个ltree标签,让我们说“C”. 我可以使用以下查询找到此标签的所有后代行: select * from myTree where path ~ '*.C.*'; 这工作正常,并提供正确的子树. 现在我需要实现查询以查找此给定标签 我有一个带有ltree路径列的表.在我的层次结构中,标签的路径是唯一的,这意味着每个标签都只有一个父标签.换句话说,表中没有两个以相同标签结尾的ltree路径.

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

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

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

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

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

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

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

以上是内存溢出为你收集整理的PostgreSQL ltree找到给定标签的所有祖先(不是路径)全部内容,希望文章能够帮你解决PostgreSQL ltree找到给定标签的所有祖先(不是路径)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1164240.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存