【发布时间】:2020-05-13 15:27:38
【问题描述】:
我正在使用 PostgreSQL,我有一个表 family,如下所示:
+----+-------+-----------+
| id | name | parent_id |
+----+-------+-----------+
| 1 | adam | 0 |
| 2 | eva | 0 |
| 3 | peter | 2 |
| 4 | pan | 3 |
+----+-------+-----------+
现在,当我删除此人时,我也希望删除孩子。例如,删除WHERE name='peter' 会从列表中删除'peter' 和'pan'。
当我删除 'eva' 时,她、'peter' 和 'pan' 会被删除。
现在我考虑删除初始行并从已删除行中获取 id。然后我会继续删除,直到现在 id 被返回。请注意,人只有一个父母,但可以有几个孩子。
SQL 中有没有一种巧妙的方法来解决这个问题?如果没有,如何取回所有已删除行的 id?
【问题讨论】:
标签: sql postgresql recursion sql-delete