加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

SQL_递归查询(复杂查询示例)

发布时间:2020-12-12 02:15:38 所属栏目:MySql教程 来源:网络整理
导读:需求: 一篇文章里有很多评论,每个评论又有很多回复评论,要求: 页面将文章展示出来,且文章的主评论按照评论时间分页展示,回复评论的评论完全展示在每个主评论下面,且按照回复时间排序 最终查询结果SQL查询结果如下: Code: 评论编码,ParentCode:回复评论编码,n

需求: 一篇文章里有很多评论,每个评论又有很多回复评论,要求: 页面将文章展示出来,且文章的主评论按照评论时间分页展示,回复评论的评论完全展示在每个主评论下面,且按照回复时间排序

最终查询结果SQL查询结果如下:

Code: 评论编码,ParentCode:回复评论编码,num:主评论序号,lvl:评论层级,CreateTime:评论创建时间

?

SQL详细过程如下:?

1-先创建我们的数据临时表作为基础数据:

a.ContentInfoCode为文章编码
SELECT * INTO #a FROM (
SELECT A.LikeNum,F.Title AS ContentTitle,A.CommentNum,A.ValidStatus,A.Code,E.CommentInfo as ReplayCommentInfo,A.CommentInfo,A.ParentCode,A.CreateTime,B.LogoImageUrl,( CASE WHEN D.Code IS NULL then '0' else 1end) as IsLike,C.LoginName,C.UserName,G.LoginName AS ReplyLoginName,G.UserName as ReplyUserName,f.ValidStatus as ContentValidStatus,a.ContentInfoCode
FROM [Content].Comment A LEFT JOIN OAuth].UserHeadPhoto] B ON  A.Creator=B.UserID and B.VersionEndTime]=9999-12-31 23:59:59'
 UserInfo] C ON (A.Creator=C.UserID and c.Status=1 )
  left join UserAction] D ON (A.Code=D.CommentCode AND D.ActionType1 AND D.Creatorb231f35a76a346449b2f4c5ddb4f88e7' ) 
  Join ].Comment E ON A.ParentCode=E.Code ContentInfo] F on a.ContentInfoCode =f.code  ] G ON (E.Creator=G.UserID and G.Status )
 WHERE 11  and a.ContentInfoCode042f89bea6ee40f4968d2a219352f2f8
) A 

2-按照递归查询格式创建递归查询:

主评论集合--根数据--涉及表名:cte c,需要增加过滤条件:ParentCode IS NULL

子评论集合--子数据--涉及表名:#a,不加条件

with cte 
(
     (
    select *,0 as lvl,ROW_NUMBER() over(order by CreateTime  desc ) num from #a 
    WHERE ParentCode NULL 
    ) B WHERE B.num BETWEEN AND 20  --主评论集合
    union all
    select #a.+,c.num     --子评论要展示的列(lvl层级列,按照c.Code=#a.ParentCode每层级+1,子评论num列直接使用主评论序号)
     cte c 
    inner join #a on c.Code = #a.ParentCode --主评论和子评论关系
)
from cte ORDER BY num,CreateTime DESC  --查询最终结果_按照主评论序号和创建时间排序

?3-查询结果,并删除临时表:

DESC   --主评论和子评论关系
DROP TABLE #a   --删除临时表

?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读