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;