• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    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使用介绍
    上一篇:SQL Server中with as使用介绍
    下一篇:SqlServer 数据库 三大  范式
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    SQL Server 通过with as方法查询树型结构 SQL,Server,通过,with,方法,