在递归CTE中检测重复项

在递归CTE中检测重复项,第1张

递归CTE中检测重复项

您可以使用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



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

原文地址: http://outofmemory.cn/zaji/5014102.html

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

发表评论

登录后才能评论

评论列表(0条)

保存