您可以使用tablefunc模块中存在的connectby函数。
首先,您需要启用该模块
CREATE EXTENSION tablefunc;
然后,您可以使用connectby函数(基于您在问题中提供的示例表,它将如下):
SELECt distinct idFROM connectby('objectdependencies', 'id', 'dependson', '4', 0)AS t(id int, dependson int, level int)where id != 4;
这将返回:1 2 3
这是文档中参数的说明:
connectby(text relname, text keyid_fld, text parent_keyid_fld [, text orderby_fld ], text start_with, int max_depth [, text branch_delim ])
- relname源关系的名称
- keyid_fld关键字字段的名称
- parent_keyid_fld父键字段的名称
- orderby_fld用来对同级进行排序的字段的名称(可选)
- start_with要开始的行的键值
- max_depth下降到的最大深度,或者为无限深度为零
- branch_delim用于在分支输出中分隔键的字符串(可选)
请查阅文档以获取更多信息。
https://www.postgresql.org/docs/9.5/static/tablefunc.html
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)