PostgreSQL
发布时间:2020-12-13 18:08:53 所属栏目:百科 来源:网络整理
导读:数据库中的数据存在父子关系(单继承,每一条记录只有一个父亲). 如果要查询一条记录以及他的所有子记录,或者要查询一条记录以及他的所有父记录.那么递归查询就再合适不过了.可以简化复杂的SQL语句 现在数据库有一张Place表,用于存放中国的地区信息. CREATE TA
数据库中的数据存在父子关系(单继承,每一条记录只有一个父亲). 如果要查询一条记录以及他的所有子记录,或者要查询一条记录以及他的所有父记录.那么递归查询就再合适不过了.可以简化复杂的SQL语句 现在数据库有一张Place表,用于存放中国的地区信息.
CREATE TABLE place
(
id serial NOT NULL,--主键
name character varying(200),--地区名
parent_id bigint,--外键 父地区
CONSTRAINT place_pkey PRIMARY KEY (id) --主键约束
)
数据库数据如下
向下递归 查询安徽以及安徽一下的所有记录
WITH RECURSIVE r AS (
SELECT * FROM place WHERE id = 2
union ALL
SELECT place.* FROM place,r WHERE place.parent_id = r.id
)
SELECT * FROM r ORDER BY id;
查询结果如下
向上递归 查询三亚以及三亚以上所有记录 WITH RECURSIVE r AS (
SELECT * FROM place WHERE id = 8
union ALL
SELECT place.* FROM place,r WHERE place.id = r.parent_id
)
SELECT * FROM r ORDER BY id;
查询结果如下
转载至:https://my.oschina.net/kenshiro/blog/160129 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |