Postgresql:根据邻接模型中的 child 列更新 parent 列

Postgresql: Update parent column based on child column in adjacency model

我有一个 table,它使用邻接模型对分层数据建模。

|----------|--------|--------|--------| | ParentID | ID | Flag | Name | |----------|--------|--------|--------| | 0 | 1 | | x | |----------|--------|--------|--------| | 1 | 2 | | y | |----------|--------|--------|--------| | 2 | 3 | | z | |----------|--------|--------|--------| 我有一个 SELECT 查询,如果名称与某些模式不匹配,它会设置标志。

SELECT r.id, r.pid, r.name, r.name NOT LIKE ALL(ARRAY[patterns to
match]) AS r.flag FROM TABLE1 AS r

现在,如果标记 child,我也想标记 parents。我该如何实现?

A left self join 将允许您找到 parent 字段。 BOOL_OR 可用于聚合 children 如果有多个。

SELECT r.id, r.pid, r.name,
CASE WHEN r.name NOT LIKE ALL(ARRAY[patterns to match]) THEN True ELSE 
BOOL_OR(child.name NOT LIKE ALL(ARRAY[patterns to match])) END AS r.flag
FROM TABLE1 AS r
LEFT JOIN TABLE1 as child on child.pid=r.id
GROUP BY r.id, r.pid, r.name, r.name NOT LIKE ALL(ARRAY[patterns to match])