在此先感謝您的幫助。我對MS SQL數據庫還是比較陌生的,但是我想知道爲什麼我下面的MSSQL遞歸查詢沒有返回我期望的值。我已經完成了我的研究,最後是我提出的代碼。比方說,我有以下表...遞歸查詢SQL Server不按預期工作
CategoryID ParentID SomeName
1 0 hmm
2 0 err
3 0 woo
4 3 ppp
5 4 ttt
我期待下面的查詢返回3 4 5我基本上是想獲得它下面的類ID的層次結構列表中的自我包容的基礎上,分類ID我通過遞歸查詢。感謝您的幫助。
GO
WITH RecursiveQuery (CategoryID)
AS
(
-- Anchor member definition
SELECT a.CategoryID
FROM [SomeDB].[dbo].[SomeTable] AS a
WHERE a.ParentID = CategoryID
UNION ALL
-- Recursive member definition
SELECT b.CategoryID
FROM [SomeDB].[dbo].[SomeTable] AS b
INNER JOIN RecursiveQuery AS d
ON d.CategoryID = b.ParentID
)
-- Statement that executes the CTE
SELECT o.CategoryID
FROM [SomeDB].[dbo].[SomeTable] AS o
INNER JOIN RecursiveQuery AS d
ON d.CategoryID = 3
GO
'WHERE a.ParentID = 0'(第一個選項可能是更好的,如果要創建的某種根鑑於此第二個主要適用) ,'WHERE b.ParentID = d.theID' –
我想最後的選擇可能來自'RecursiveQuery'。 'd.theID'不會產生橫切值'3',它將成爲所有id的列表。所以filter = 3會給你一條記錄。 –
正如@IvanStarostin所說,你的錨定成員定義並不是記錄。主播應該是一個作爲你的出發點的記錄。 –