我有一张有自我关系的桌子:
id - parentId列
我需要一个查询来获取parentId为null的父行,但我无法弄清楚这样做的正确方法。
select * from table1 where id = parentId;
显然这不起作用,它只会给直接的父母。
任何帮助
答案 0 :(得分:1)
“获取parentId为空的父行”是没有意义的,但是如果你实际上意味着“获取父行,直到,parentId是null“,那么这个递归CTE应该可以解决问题:
WITH cte AS (
SELECT * FROM table1 WHERE id = 7
UNION ALL
SELECT table1.* FROM table1 JOIN cte ON table1.id = cte.parentId
)
SELECT * FROM cte
这将返回id = 7的行及其所有祖先的递归。根据您的需要更换7个。
答案 1 :(得分:0)
SELECT *
FROM table1 AS A
LEFT JOIN table1 as B
ON B.ID = A.parentID
WHERE B.parentID IS NULL