sql server递归查询

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
简介: 1、既然要谈到sql,数据库表是必须的   2、数据结构     3、获取某个节点的所有子节点     传统的写法(sql2000) 很麻烦,暂且就不写了     来看看CTE的写法     CREATE PROC sp_getTreeById(@TreeId int) A...

1、既然要谈到sql,数据库表是必须的

 

2、数据结构

   

3、获取某个节点的所有子节点

    传统的写法(sql2000) 很麻烦,暂且就不写了

    来看看CTE的写法

   

复制代码
CREATE PROC sp_getTreeById(@TreeId int)
AS
BEGIN
    
    WITH cteTree
        AS (SELECT *
              FROM TuziTree
              WHERE Id = @TreeId  --第一个查询作为递归的基点(锚点)
            UNION ALL
            SELECT TuziTree.*     --第二个查询作为递归成员, 下属成员的结果为空时,此递归结束。
              FROM
                   cteTree INNER JOIN TuziTree ON cteTree.Id = TuziTree.ParentId) 
        SELECT *
          FROM cteTree 
  
END
复制代码

  测试一下啊  

 exec  sp_getTreeById  @TreeId=1001                          

结果

-----------------------------------------------

4、使用节点路径来做(每个节点路径都保存自身的路径和所有父节点的路径=自己和所有父节点的关联)

   

5、既然有个路径

  那么查询其所有子节点 只需要 where nodePath like '/1001/%'了

  这样就会简单很多,加上索引。

总结:

  如果在性能的需要上,我们可以采用按需加载,点击节点时候 才会加载其所有子节点。

  如果在变化不大的情况下,可以采用缓存 。这样的处理 可以满足很多业务需求。

  良好的表设计会给后期的开发以及需求变化 带来更多的便利。

作者:阿笨

      官方QQ一群(已满):422315558跟着阿笨一起玩NET

      官方QQ二群(加入):574187616跟着阿笨一起玩NET(二)

      个人讲师课堂主页:http://study.163.com/instructor/2544628.htm

      个人微信公众号课程主页:http://dwz.cn/ABenNET

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
目录
相关文章
|
14天前
|
SQL 人工智能 算法
【SQL server】玩转SQL server数据库:第二章 关系数据库
【SQL server】玩转SQL server数据库:第二章 关系数据库
52 10
|
16天前
|
SQL
sql语句加正则 简化查询
sql语句加正则 简化查询
14 0
sql语句加正则 简化查询
|
1月前
|
SQL
sql server链接查询
sql server链接查询
17 1
|
1月前
|
SQL
sql server简单查询
sql server简单查询
14 1
|
24天前
|
SQL 关系型数据库 MySQL
mysql一条sql查询出多个统计结果
mysql一条sql查询出多个统计结果
14 0
|
24天前
|
SQL
启动mysq异常The server quit without updating PID file [FAILED]sql/data/***.pi根本解决方案
启动mysq异常The server quit without updating PID file [FAILED]sql/data/***.pi根本解决方案
17 0
|
14天前
|
SQL 算法 数据库
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
84 6
|
1月前
|
SQL
sql高级查询
sql高级查询
12 0
|
1天前
|
SQL 数据管理 关系型数据库
如何在 Windows 上安装 SQL Server,保姆级教程来了!
在Windows上安装SQL Server的详细步骤包括:从官方下载安装程序(如Developer版),选择自定义安装,指定安装位置(非C盘),接受许可条款,选中Microsoft更新,忽略警告,取消“适用于SQL Server的Azure”选项,仅勾选必要功能(不包括Analysis Services)并更改实例目录至非C盘,选择默认实例和Windows身份验证模式,添加当前用户,最后点击安装并等待完成。安装成功后关闭窗口。后续文章将介绍SSMS的安装。
4 0
|
1天前
|
SQL Java 数据库连接
Java从入门到精通:2.3.2数据库编程——了解SQL语言,编写基本查询语句
Java从入门到精通:2.3.2数据库编程——了解SQL语言,编写基本查询语句