栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在递归CTE中检测重复项

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在递归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



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/404721.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号