【发布时间】:2021-07-18 22:25:02
【问题描述】:
我有一个表,以父项和子项作为列,我的父列是一个数组,因为子项可以有多个父项。那么任何人都可以建议如何构建cte(Postgres 11.2)来获取孩子的父母和祖先。这是我的数据。无论数组位置如何,cte 都应返回正确的父级。
CREATE TABLE public.mytable (
id uuid NOT NULL,
parent_id uuid[],
name character varying(255) COLLATE pg_catalog."default",
created_at timestamp with time zone NOT NULL,
updated_at timestamp with time zone NOT NULL,
CONSTRAINT mytable_pkey PRIMARY KEY (id)
);
数据是
id parentId
1 null
2 null
3 1
4 1
5 1
6 [3,4]
7 2
8 6
id=8 的预期输出:
parent
1
[3+4]
6
【问题讨论】:
-
“父母”还是“父母”?请准确。披露您的 Postgres 版本、准确的表定义和准确的预期结果。
-
@ErwinBrandstetter 好的,添加了详细信息
-
@user8532998 你能添加一个更好的样本吗?您的表需要
uuid和uuid[],而您的数据样本使用int和int[]。最好在您提到的表中添加INSERT语句。
标签: sql arrays postgresql common-table-expression recursive-query