Postgres SQL 递归查询
Postgres SQL recursive queries
我正在使用 PostgreSQL
有两个表:图层和图像
LAYERS (layer_id varchar PRIMARY KEY,
parent_id varchar REFERENCES LAYERS(layer_id))
IMAGES (image_id varchar UNIQUE, REFERENCES LAYERS(layer_id))
in LAYERS table: 1->2->3->4->5->6 (1 is the parent of 2)
in IMAGES table: 1,2,5,6
现在我想知道,哪张图片是图片5最近的父图片?
答案是图2
如何编写这样的 SQL 查询?
非常感谢!
WITH RECURSIVE parents(id) AS(
SELECT parent FROM layers WHERE layerid = '5'
UNION
SELECT layers.parent FROM parents, layers WHERE layers.layerid = parents.id
AND parents.id NOT IN (SELECT imageid FROM images)
)
SELECT imageid FROM parents, images WHERE images.imageid = parents.id;
我正在使用 PostgreSQL 有两个表:图层和图像
LAYERS (layer_id varchar PRIMARY KEY,
parent_id varchar REFERENCES LAYERS(layer_id))
IMAGES (image_id varchar UNIQUE, REFERENCES LAYERS(layer_id))
in LAYERS table: 1->2->3->4->5->6 (1 is the parent of 2)
in IMAGES table: 1,2,5,6
现在我想知道,哪张图片是图片5最近的父图片?
答案是图2
如何编写这样的 SQL 查询?
非常感谢!
WITH RECURSIVE parents(id) AS(
SELECT parent FROM layers WHERE layerid = '5'
UNION
SELECT layers.parent FROM parents, layers WHERE layers.layerid = parents.id
AND parents.id NOT IN (SELECT imageid FROM images)
)
SELECT imageid FROM parents, images WHERE images.imageid = parents.id;