MyT*_*tle 7 postgresql recursion
我有递归查询来检索给定人的所有孩子
WITH RECURSIVE recursetree(id, parent_id) AS (
SELECT id, parent_id FROM tree WHERE parent_id = 0
UNION
SELECT t.id, t.parent_id
FROM tree t
JOIN recursetree rt ON rt.id = t.parent_id
)
SELECT * FROM recursetree;
Run Code Online (Sandbox Code Playgroud)
如您所见,我正在指定要检索的列的列表。但是我想使用SELECT *(实际表中确实有很多列,以后可以更改它们)。有没有某种方法可以获取ALL列而不单独定义每个列?
您不需要在WITH部件中指定列。如果您忽略这一点,列名将由 中的第一个查询确定UNION:
WITH RECURSIVE recursetree AS (
SELECT * FROM tree WHERE parent_id = 0
UNION
SELECT t.*
FROM tree t
JOIN recursetree rt ON rt.id = t.parent_id
)
SELECT *
FROM recursetree;
Run Code Online (Sandbox Code Playgroud)
快速破解(重新加入原版):
WITH RECURSIVE recursetree(id, parent_id) AS (
SELECT id, parent_id FROM tree WHERE parent_id = 0
UNION
SELECT t.id, t.parent_id
FROM tree t
JOIN recursetree rt ON rt.id = t.parent_id
)
SELECT *
FROM tree tr
WHERE EXISTS ( SELECT 1
FROM recursetree x
WHERE x.id = tr.id
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3446 次 |
| 最近记录: |