WITH locs(ArticleReplyId,ParentId,ParentUserName,UserId,ArticleTitle,loclevel)
AS
(
SELECT ArticleReplyId,ParentId,ParentUserName,UserId,ArticleTitle,0 AS loclevel FROM ArticleReply_tb
WHERE ParentId is null
UNION ALL
SELECT l.ArticleReplyId,l.ParentId,l.ParentUserName,l.UserId,l.ArticleTitle,loclevel+1 FROM ArticleReply_tb l
INNER JOIN locs p ON l.ParentId=p.UserId
)
SELECT * FROM locs
sql server 2005以上可以使用更多参考http://blog.csdn.net/xys_777/archive/2010/06/15/5672481.aspx