南沙电子商务网站建设,凡科平台登录,中建设计集团网站,网站建设的成本与费用有哪些微软从SQL2005起引入了CTE(Common Table Expression)以强化T-SQL。公用表表达式 (CTE) 具有一个重要的优点#xff0c;那就是能够引用其自身#xff0c;从而创建递归 CTE。递归 CTE 是一个重复执行初始 CTE 以返回数据子集直到获取完整结果集的公用表表达式。当某个查询引用递…微软从SQL2005起引入了CTE(Common Table Expression)以强化T-SQL。公用表表达式 (CTE) 具有一个重要的优点那就是能够引用其自身从而创建递归 CTE。递归 CTE 是一个重复执行初始 CTE 以返回数据子集直到获取完整结果集的公用表表达式。当某个查询引用递归 CTE 时它即被称为递归查询。递归查询通常用于返回分层数据例如显示某个组织图中的雇员或物料清单方案(其中父级产品有一个或多个组件而那些组件可能还有子组件或者是其他父级产品的组件)中的数据。递归 CTE 可以极大地简化在 SELECT、INSERT、UPDATE、DELETE 或 CREATE VIEW 语句中运行递归查询所需的代码。在 SQL Server 的早期版本中递归查询通常需要使用临时表、游标和逻辑来控制递归步骤流。有关公用表表达式的详细信息请参阅使用公用表表达式。伪代码和语义————————————————————————————递归 CTE 结构必须至少包含一个定位点成员和一个递归成员。以下伪代码显示了包含一个定位点成员和一个递归成员的简单递归 CTE 的组件。WITH cte_name ( column_name [,...n] )AS(CTE_query_definition –- Anchor member is defined.UNION ALLCTE_query_definition –- Recursive member is defined referencing cte_name.)-- Statement using the CTESELECT * FROM cte_name递归执行的语义如下将 CTE 表达式拆分为定位点成员和递归成员。运行定位点成员创建第一个调用或基准结果集 (T0)。运行递归成员将 Ti 作为输入将 Ti1 作为输出。重复步骤 3直到返回空集。返回结果集。这是对 T0 到 Tn 执行 UNION ALL 的结果。示例————————————————————————————原表现在有一个需求要查询出某个省下面的所有市和区(查询结果包含省)。如果只使用SQL语句来实现需要使用到游标、临时表等技术。但在SQL Server2005中还可以使用CTE来实现。WITH districtAS(--获得第一个结果集并更新最终结果集SELECT * FROM t_tree WHERE id 0UNION ALL--下面的select语句首先会根据从上一个查询结果集中获得的id值来查询parent_id--字段的值然后district就会变当前的查询结果集并继续执行下面的select 语句--如果结果集不为null则与最终的查询结果合并同时用合并的结果更新最终的查--询结果否则停止执行。最后district的结果集就是最终结果集。SELECT a.* FROM t_tree aINNER JOIN district bONa.parent_id b.id)SELECT * FROM district查询结果有关使用公用表表达式的详细信息请参阅使用公用表表达式的递归查询。