需求:根据当前数据的id,查找所有父级数据。这其实时数据库的一个递归查询
上面是PostgreSQL的查询结果。
MYSQL:参考链接
PostgreSQL:
表结构
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;