SQL2005数据库公用表表达式(CTE)的递归调用_SQL SERVER数据库_黑客防线网安服务器维护基地--Powered by WWW.RONGSEN.COM.CN

SQL数据库2005杂谈(2):公用表表达式(CTE)的递归调用[组图]

作者:黑客防线网安SQL维护基地 来源:黑客防线网安SQL维护基地 浏览次数:0

本篇关键词:调用组图公用数据库
黑客防线网安网讯:  先看如下一个数据表(t_tree):  上图显示了一个表中的数据,这个表有三个字段:id、node_name、parent_id。实际上,这个表中保存了一个树型结构,分三层:省、市、区。其中id表示当...

  先看如下一个数据表(t_tree):

  上图显示了一个表中的数据这个表有三个字段:id、node_name、parent_id实际上这个表中保存了一个树型结构,分三层:省、市、区其中id表示当前省、市或区的id号、node_name表示名称、parent_id表示节点的父节点的id。

  现在有一个需求,要查询出某个省下面的所有市和区(查询结果包含省)。如果只使用SQL语句来实现,需要使用到游标、临时表等技术。但在SQL Server2005中还可以使用CTE来实现。

  从这个需求来看属于递归调用,也就是说先查出满足调价的省的记录,在本例子中的要查“辽宁省”的记录,如下:

  id  node_name  parent_id

  1   辽宁省    0

  然后再查所有parent_id字段值为1的记录,如下:

  id  node_name  parent_id

  2   沈阳市    1

  3   大连市    1

  最后再查parent_id字段值为2或3的记录,如下:

  id  node_name  parent_id

  4    大东区    2

  5    沈河区    2

  6    铁西区    2

  将上面三个结果集合并起来就是最终结果集。

  上述的查询过程也可以按递归的过程进行理解,即先查指定的省的记录(辽宁省),得到这条记录后,就有了相应的id值,然后就进入了的递归过程,如下图所示。

    黑客防线网安服务器维护方案本篇连接:http://www.rongsen.com.cn/show-9783-1.html
网站维护教程更新时间:2012-03-21 02:25:31  【打印此页】  【关闭
我要申请本站N点 | 黑客防线官网 |  
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479

footer  footer  footer  footer