Database Postgres中的LTREE祖先查询未按预期工作
我有一个带有Database Postgres中的LTREE祖先查询未按预期工作,database,postgresql,postgresql-9.4,ltree,Database,Postgresql,Postgresql 9.4,Ltree,我有一个带有LTREE列的表,数据如下所述 ID Label Path 1. ABC. 1 2. DEF. 1.2 26. GHI. 1.2.26 假设我想查找标记为GHI的节点的祖先。我使用的查询是 SELECT * FROM my_table as tbl WHERE tbl.path @> ( SELECT path FROM
LTREE
列的表,数据如下所述
ID Label Path
1. ABC. 1
2. DEF. 1.2
26. GHI. 1.2.26
假设我想查找标记为GHI
的节点的祖先。我使用的查询是
SELECT *
FROM
my_table as tbl
WHERE
tbl.path @> (
SELECT
path
FROM
my_table
WHERE
id=26
)
但是,这只返回最后一行,而我需要所有三行。我做错了什么?我也是Ltree的新手,但我想我可以帮你 您的设置应该与Ltree的GIST索引相匹配。 参见官方文件的
F.21.3
部分
我相信没有它,运营商就无法正确地了解您想要什么。此外,这个问题似乎是正确的。我在本地环境中运行了相同的代码(尽管我使用了最新版本的Postgres),这很有效。要查找给定路径的所有子体,请使用
SELECT *
FROM my_table as tbl
WHERE path <@ '1.12.26'