我有擁有自營關係的表:表自相關查詢
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:我認爲他的意思是得到「超級」 - 父母。父母的父母,直到沒有父母。 –