公用表表达式(CTE)递归调用
来源:优易学  2011-2-9 12:35:58   【优易学:中国教育考试门户网】   资料下载   IT书店

  一个数据表(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值,然后就进入了的递归过程,如下图所示。
  

[1] [2] 下一页

责任编辑:小草

文章搜索:
 相关文章
热点资讯
热门课程培训