CTE WITH Recrusive
来源:互联网 发布:mac 双系统 打游戏卡 编辑:程序博客网 时间:2024/05/17 02:11
CTE函数处理递归(WITH语法)
我们在做分类处理的时候,总会遇到递归的处理,比如说地区就是一个例子,中国--北京--西城区,我们可以把这样的信息存储在一个数据表中,用ParentID区分根节点和叶子节点。假如我们要做导航,得到了”西城区”,但是还要得到他的父级,或夫父级,一种方式是用程序来处理,也是很简单,另一种方式就是用数据库的功能。既然数据库能完成这件事,何必在用程序呢?在SqlServer2005以前的版本中,也能处理这种情况,不过当时用的是存储过程,代码也比较多,表设计的时候,还的加一个表示“深度”的字段,当时我也写过相关的文章,参见:
存储过程实现无限级分类(1)
存储过程实现无限级分类(2)
存储过程实现无限级分类(3)
但是,在学习SqlServer2005新加的特性的时候,注意到WITH语句能实现这样的功能,并且代码简单,简练,最重要的是好理解。
下面是一张递归的表结构图:
里边的parentID记录的就是他们之间的关系;
比如我们要查询id = 10008,并且parentID 为10008的数据怎么办呢?如:
呵呵,不留悬念了,直接上代码吧!其实挺容易理解的:
WITH CategoryInfo AS(
SELECT id,text,parentid FROM Recursive WHERE id = 10008
UNION ALL
SELECT a.id,a.text,a.parentid FROM Recursive AS a,CategoryInfo AS b WHERE a.parentid = b.id
)
SELECT * FROM CategoryInfo
看看是不是简单,简练,好理解!
赶快试试吧!
这是从上向下查,如果从下向上查,怎么查呢,自己举一反三吧!
- CTE WITH Recrusive
- With (CTE、递归CTE)
- WITH CTE递归查询
- cte with as 用法
- SQL CTE WITH 递归查询
- SQL中使用WITH CTE
- SQL With (递归CTE查询)
- SqlServer:CTE函数处理递归(WITH语法)
- SQL With(递归 CTE 查询)
- SQL递归查询(with cte as)
- SQL递归查询(with cte as)
- SQL递归CTE查询(;with xxx as)
- 公用表表达式(CTE) with as
- SQL With(递归 CTE 查询)
- CTE~
- CTE
- CTE
- T-SQL查询:CTE - with as 子句的特殊应用
- Flex中限制TextInput输入类型
- android删除listview item(动画删除)
- vim color by cbj
- android 设置文字下划线
- 黑马程序员--JavaScript自学总结
- CTE WITH Recrusive
- linux中硬链接和符号链接的区别
- jsp中JAVABEAN用法之setProperty实例源码
- 云点论坛
- ural 1200
- java 由byte[]转int 看计算机加减运算和结果表达
- Android 应用第一次运行时,引导页面的设置方法(只让程序Acitivity运行一次的设置方法)
- 计算GMT时间
- minixml解析器移植