sql实际应用-递归查询
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/%'了
这样就会简单很多,加上索引。
总结:
如果在性能的需要上,我们可以采用按需加载,点击节点时候 才会加载其所有子节点。
如果在变化不大的情况下,可以采用缓存 。这样的处理 可以满足很多业务需求。
良好的表设计会给后期的开发以及需求变化 带来更多的便利。
下次继续总结sql方面的知识,案例一切以实际工作演变而来。
sql实际应用-递归查询的更多相关文章
- SQL Server CTE 递归查询全解
在TSQL脚本中,也能实现递归查询,SQL Server提供CTE(Common Table Expression),只需要编写少量的代码,就能实现递归查询,本文详细介绍CTE递归调用的特性和使用示例 ...
- SQL Server CTE 递归查询全解 -- 转 学习
在TSQL脚本中,也能实现递归查询,SQL Server提供CTE(Common Table Expression),只需要编写少量的代码,就能实现递归查询,本文详细介绍CTE递归调用的特性和使用示例 ...
- SQL Server CTE 递归查询全解(转载)
在TSQL脚本中,也能实现递归查询,SQL Server提供CTE(Common Table Expression),只需要编写少量的代码,就能实现递归查询,本文详细介绍CTE递归调用的特性和使用示例 ...
- SQL Server 实现递归查询
基础数据/表结构 Sql 语句 ;With cte(id,pid,TName)As ( Select id,pid,TName Union All Select B.i ...
- T-SQL with as 的用法(转) SQL 下的递归查询 SQL2005(CTE) ,SQL2000(Function 递归)
摘自: http://blog.csdn.net/bluefoxev/article/details/6779794 ------- SQL2005 方法 一.WITH AS的含义 WITH ...
- LINQ TO SQL 实现无限递归查询
from:http://blog.csdn.net/q107770540/article/list 见论坛内有网友提问类似的问题已经不止一次了, 现总结一下,希望能给以后再碰到此类问题的朋友一些帮助 ...
- sql 泡沫 或者 递归查询
if object_id('[tb]') is not null drop table [tb] go ),parentid int) insert [tb] ,N union all ,N unio ...
- SQL SERVER递归查询
SQL SERVER 进行递归查询 有如下数据表
- MS SQL Server递归查询
原文:MS SQL Server递归查询 刚才在论坛上看到网友一个要求.参考如下,Insus.NET分析一下,可以使用MS SQL Server的递归查询,得到结果.准备一张表: 根据网友提供的数据, ...
随机推荐
- JMeter3.0配置
解压apache-jmeter-3.0.zip文件至c盘,本文解压至C:\jmeter3目录下. 桌面上选择“我的电脑”(右键),高级, 环境变量, 在“系统变量”--->“新建”, 在变量名中 ...
- 安装Vagrant出错 安装Homestead出错失败
安装Vagrant出错 安装Homestead出错 我们也可以在电脑上创建其它文件夹,只需保证创建的文件夹路径跟 Homestead.yaml 文件中的 folders - map 保持一致即 ...
- cordova百度地图定位Android版插件
本插件利用百度地图提供的定位功能进行Android版手机定位. 为什么没有iOS版? 因为iOS版有官方的定位插件cordova-plugin-geolocation可以使用. 请参照:cordova ...
- js math 对数和指数处理 expm1 log1p
1.Math.expm1() Math.expm1(x)返回 ex - 1,即Math.exp(x) - 1. Math.expm1(-1) // -0.6321205588285577 Math.e ...
- Android Exception 11(baidumapsdk(15405): Authentication Error errorcode: 102 uid)
08-12 16:06:12.622: E/baidumapsdk(15405): Authentication Error errorcode: 102 uid: null appid -1 msg ...
- LeetCode-1:Two Sum
[Problem:1-Two Sum] Given an array of integers, return indices of the two numbers such that they add ...
- 中小型研发团队架构实践:分布式协调服务ZooKeeper
一.ZooKeeper 是什么 Apache ZooKeeper 由 Apache Hadoop 的子项目发展而来,于 2010 年 11 月正式成为了 Apache 的顶级项目. 相关厂商内容 优秀 ...
- Excel小笔记——冻结窗格
excel提供了冻结首行首列功能 但是, 大部分时间我们是希望 冻结多行窗格 方法:选中要冻结多行窗格的下一行,点击视图——冻结拆分窗格
- QT Unexpected CDB exit 问题的解决办法
行QT进行debug时,提示 Unexpected CDB exit ,The CBD process terminated.. QtCreator 默认是没有调试器的,因此需要用户额外安装. win ...
- jfinal的maven配置
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...