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,但排序总不能满意。。