sql server 樹狀態 層狀態 查詢 在原表無進深字段時使用。
用路徑來識別
WITH Tree
as(
SELECT p.CommentId, p.ParentCId,cast(right(replicate('0',5)+CONVERT(nvarchar(100), ROW_NUMBER()over(order by createtime)),5)as nvarchar(1000))path FROM IMComment(nolock) P WHERE P.ParentCId = '00000000-0000-0000-0000-000000000000'
union all
select * from( select c.CommentId, c.ParentCId,cast(t.path+'/'+ right(replicate('0',5)+CONVERT(nvarchar(100),ROW_NUMBER()over(order by createtime)),5) as nvarchar(1000))path FROM IMComment(nolock) c
INNER JOIN Tree T ON C.ParentCId = T.CommentId) c
)
select * from Tree t order by t.path
主要是path這個參數花了比較長的時間研究。。
先前用了只用了rowid,但排序總不能滿意。。