最新消息:

SqlServer:CTE函数处理递归(WITH语法)

MSSQL admin 473浏览 0评论

我们在做分类处理的时候,总会遇到递归的处理,比如说地区就是一个例子,中国–北京–西城区,我们可以把这样的信息存储在一个数据表中,用ParentID区分根节点和叶子节点。假如我们要做导航,得到了”西城区”,但是还要得到他的父级,或夫父级,一种方式是用程序来处理,也是很简单,另一种方式就是用数据库的功能。既然数据库能完成这件事,何必在用程序呢?

但是,在学习SqlServer2005新加的特性的时候,注意到WITH语句能实现这样的功能,并且代码简单,简练,最重要的是好理解。

下面是一张递归的表结构图:

Recursive_1

里边的parentID记录的就是他们之间的关系;

比如我们要查询id = 10008,并且parentID 为10008的数据怎么办呢?如:

Recursive_3

呵呵,不留悬念了,直接上代码吧!其实挺容易理解的:

 

看看是不是简单,简练,好理解!

赶快试试吧!

这是从上向下查,如果从下向上查,怎么查呢,自己举一反三吧!

转载请注明:中国翼通 » SqlServer:CTE函数处理递归(WITH语法)


分享到:
已有 0 条评论 腾讯微博