共计 1212 个字符,预计需要花费 4 分钟才能阅读完成。
SQL Server 如何通过 with as 方法查询树型结构,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
一、with as 公用表表达式
类似 VIEW,但是不并没有创建对象,WITH AS 公用表表达式不创建对象,只能被后随的 SELECT 语句,其作用:
1. 实现递归查询 (树形结构)
2. 可以在一个语句中多次引用公用表表达式,使其更加简洁
二、非递归的公共表达式
可以是定义列或自动列和 select into 效果差不多
-- 指定列 with withTmp1 (code,cName)as( select id,Name from ClassUnis)select * from withTmp1-- 自动列 with withTmp2 as( select * from ClassUnis where Author = system)select * from withTmp2
三、递归的方式
通过 UNION ALL 连接部分。通过连接自身 whit as 创建的表达式,它的连接条件就是递归的条件。可以从根节点往下查找,从子节点往父节点查找。只需要颠倒一下连接条件。例如代码中条件改为 t.ID = c.ParentId 即可
with tree as( --0 as Level 定义树的层级, 从 0 开始 select *,0 as Level from ClassUnis where ParentId is null union all --t.Level + 1 每递归一次层级递增 select c.*,t.Level + 1 from ClassUnis c,tree t where c.ParentId = t.ID --from ClassUnis c inner join tree t on c.ParentId = t.ID)select * from tree where Author not like %/%
还能通过 option(maxrecursion Number) 设置最大递归次数。例如上诉结果 Level 最大值为 2 表示递归两次。我们设置其值为 1
with tree as( select *,0 as Level from ClassUnis where ParentId is null union all select c.*,t.Level + 1 from ClassUnis c,tree t where c.ParentId = t.ID)select * from tree where Author not like %/% option(maxrecursion 1)
关于 SQL Server 如何通过 with as 方法查询树型结构问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注丸趣 TV 行业资讯频道了解更多相关知识。
正文完