SQL递归查询!
来源:互联网 发布:手机主题美化软件 编辑:程序博客网 时间:2024/06/07 20:30
1、既然要谈到sql,数据库表是必须的
2、数据结构
3、获取某个节点的所有子节点
传统的写法(sql2000) 很麻烦,暂且就不写了
来看看CTE的写法
CREATE PROC sp_getTreeById(@TreeId int)ASBEGIN 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方面的知识,案例一切以实际工作演变而来。
0 0
- SQL 递归查询
- SQL 递归查询
- SQL递归查询
- sql 递归查询
- SQL Server 递归查询
- SQL递归查询
- SQL递归查询函数
- SQL递归查询数据
- Sql 递归查询
- sql递归查询问题
- SQL递归查询函数
- SQL递归查询部门
- Sql 2005 递归查询
- SQL递归查询数据
- sql递归查询
- sql 递归查询
- sql递归查询问题
- 总计sql 递归查询
- 自定义二维码扫描页面-用系统提供的类
- 颜色透明度计算
- 连续小波变换的概念swt,cwt,dwt
- Android学习笔记:WebView常用技巧
- JS实现下拉列表显示当前日期到之前半年的所有日期
- SQL递归查询!
- Oozie配置Hue
- eclipse发布项目到tomcat注意外部包问题
- 结构体中存在string类型成员
- java 类型信息(RTTI) 中 Class对象的理解
- matlab 结构(struct)数组
- SQL错误:无法删除对象 '****',因为该对象正由一个 FOREIGN KEY 约束引用。
- easyui防止重复提交及进度条报错解决: Cannot read property 'onClose' of undefined
- Linux下实现Mac下QuickSilver那样的一键切换程序(代替Alt-Tab键)