Sql-Server
為樹中的每個節點創建層次鏈(反向路徑)
給定一個典型的閉包表,我將如何編寫查詢以將 id 列表返回到根?有沒有辦法為所有
$$ unique $$身份證?我正在使用 Microsoft SQL Server。 鑑於:
parent child depth 1 1 0 2 2 0 3 3 0 1 2 1 2 3 1 1 3 2
我想要:
id path 1 1 2 1,2 3 1,2,3
那有意義嗎?
對我來說看起來像一個
GROUP_CONCAT
,除非我錯過了什麼,例如CREATE TABLE #heredity ( parent INT NOT NULL, child INT NOT NULL, depth INT NOT NULL, CONSTRAINT _pk_heredity PRIMARY KEY ( parent, child ) ); GO INSERT INTO #heredity ( parent, child, depth ) VALUES ( 1, 1, 0 ), ( 2, 2, 0 ), ( 3, 3, 0 ), ( 1, 2, 1 ), ( 2, 3, 1 ), ( 1, 3, 2 ); GO SELECT child, STUFF( ( SELECT ',' + CAST( parent AS VARCHAR(20) ) FROM #heredity p WHERE c.parent = p.child ORDER BY parent DESC FOR XML PATH(''), TYPE ).value('.', 'VARCHAR(100)'), 1, 1,'') AS [path] FROM #heredity c WHERE depth = 0;
我的結果: