我有拥有自营关系的表:表自相关查询
ID - parentId的列
我需要一个查询来获取父行,其中的parentId为空,但我想不出走出这样做的正确方式。
select * from table1 where id = parentId;
显然这是行不通的,它只会给直接的父母。
任何帮助
我有拥有自营关系的表:表自相关查询
ID - parentId的列
我需要一个查询来获取父行,其中的parentId为空,但我想不出走出这样做的正确方式。
select * from table1 where id = parentId;
显然这是行不通的,它只会给直接的父母。
任何帮助
“获取父行,其中parentId的为空”是没有意义的,但如果你实际上意味着“得父行直到的parentId的为空”,那么这个递归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及其全部返回行ncestors递归地。根据您的需要更换7个。
这没有意义:“获取parentId为null的父行” - 如果parentId为null,是不是表示没有父行? – driis
你可以用递归CTE来完成它:http://msdn.microsoft.com/en-us/library/ms186243.aspx –
@driis:我认为他的意思是得到“超级” - 父母。父母的父母,直到没有父母。 –