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

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    SQL Server 树形表非循环递归查询的实例详解

    很多人可能想要查询整个树形表关联的内容都会通过循环递归来查...事实上在微软在SQL2005或以上版本就能用别的语法进行查询,下面是示例。

    --通过子节点查询父节点
    WITH 
    TREE AS( 
    SELECT * FROM Areas 
    WHERE id = 6 -- 要查询的子 id 
    UNION ALL 
    SELECT Areas.* FROM Areas, TREE 
    WHERE TREE.PId = Areas.Id
    ) 
    SELECT Area FROM TREE
    --通过父节点查询子节点
    WITH 
    TREE AS( 
    SELECT * FROM Areas 
    WHERE id = 7 -- 要查询的子 id 
    UNION ALL 
    SELECT Areas.* FROM Areas, TREE 
    WHERE TREE.Id = Areas.PId
    ) 
    SELECT Area FROM TREE

    通过子节点查询父节点查询结果为:

    修改代码为

    --通过子节点查询父节点
    declare @area varchar(8000);
    WITH 
    TREE AS( 
    SELECT * FROM Areas 
    WHERE id = 6 -- 要查询的子 id 
    UNION ALL 
    SELECT Areas.* FROM Areas, TREE 
    WHERE TREE.PId = Areas.Id
    )
    select @area=isnull(@area,'')+Area from Tree order by id 
    select Area= @area

    则结果为:中国北京市丰台区

    根据以上可以将这段代码封装为一个存储过程

    -----存储过程,递归获取树形地区表字符串
    if exists (select * from sysobjects where name='SP_GetAreaStr')
    drop proc SP_GetAreaStr
    go
    create procedure SP_GetAreaStr 
    @id int
    as
    declare @area varchar(8000)
    begin
    WITH 
    TREE AS( 
    SELECT * FROM Areas 
    WHERE id = @id -- 要查询的子 id 
    UNION ALL 
    SELECT Areas.* FROM Areas, TREE 
    WHERE TREE.PId = Areas.Id
    )
    select @area=isnull(@area,'')+Area from Tree order by id 
    select Area= @area
    end 
    go
    --exec sp_helptext 'SP_GetAreaStr'
    --go
    exec SP_GetAreaStr 28
    go

    查询结果:中国安徽省宿州市灵璧县

    所用表结构:

    部分数据:

    以上所述是小编给大家介绍的SQL Server 树形表非循环递归查询的实例详解的相关知识,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

    您可能感兴趣的文章:
    • sql server递归子节点、父节点sql查询表结构的实例
    • 使用SqlServer CTE递归查询处理树、图和层次结构
    • 使用SQLSERVER 2005/2008 递归CTE查询树型结构的方法
    • SQLSERVER2005 中树形数据的递归查询
    • SQLserver2008使用表达式递归查询
    • 高效的SQLSERVER分页查询(推荐)
    • SQL Server SQL高级查询语句小结
    • Sql server2005 优化查询速度50个方法小结
    • SQLserver 实现分组统计查询(按月、小时分组)
    • sqlserver 模糊查询常用方法
    • sql server实现递归查询的方法示例
    上一篇:当master down掉后,pt-heartbeat不断重试会导致内存缓慢增长的原因及解决办法
    下一篇:SQL Server 2012安装后服务器名称找不到的解决办法
  • 相关文章
  • 

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

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

    SQL Server 树形表非循环递归查询的实例详解 SQL,Server,树形,表非,循环,