网站大量收购独家精品文档,联系QQ:2885784924

CTE应用--递归查询.docVIP

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
CTE应用--递归查询.doc

SQL Server教程:SQL2005/2008中的CTE应用--递归查询2011年11月24日? 来源:51Test.NET???培训课程? 发布课程? 加入收藏 - 【51Test.NET-SQL Server教程:SQL2005/2008中的CTE应用--递归查询】: 微软从SQl2005起引入了CTE(Common Table Expression)以强化T-SQL。这是一个类似于非持久视图的好东东。 按照MSDN介绍 1、公用表表达式 (CTE) 可以认为是在单个 SELECT、INSERT、UPDATE、DELETE 或 CREATE VIEW 语句的执行范围内定义的临时结果集 。CTE 与派生表类似,具体表现在不存储为对象,并且只在查询期间有效 。与派生表的不同之处在于,CTE 可自引用,还可在同一查询中引用多次 。 CTE 可用于: 创建递归查询。有关详细信息,请参阅使用公用表表达式的递归查询 。 在不需要常规使用视图时替换视图,也就是说,不必将定义存储在元数据中。 启用按从标量嵌套 select 语句派生的列进行分组,或者按不确定性函数或有外部访问的函数进行分组。 在同一语句中多次引用生成的表。 使用 CTE 可以获得提高可读性和轻松维护复杂查询的优点。查询可以分为单独块、简单块、逻辑生成块。之后,这些简单块可用于生成更复杂的临时 CTE,直到生成最终结果集。可以在用户定义的例程(如函数、存储过程、触发器或视图)中定义 CTE。 2、公用表表达式 (CTE) 具有一个重要的优点,那就是能够引用其自身,从而创建递归 CTE 。递归 CTE 是一个重复执行初始 CTE 以返回数据子集直到获取完整结果集的公用表表达式。当某个查询引用递归 CTE 时,它即被称为递归查询 。递归查询通常用于返回分层数据,例如:显示某个组织图中的雇员或物料清单方案(其中父级产品有一个或多个组件,而那些组件可能还有子组件,或者是其他父级产品的组件)中的数据。 递归 CTE 可以极大地简化在 SELECT、INSERT、UPDATE、DELETE 或 CREATE VIEW 语句中运行递归查询所需的代码。在 SQL Server 的早期版本中,递归查询通常需要使用临时表、游标和逻辑来控制递归步骤流。有关公用表表达式的详细信息,请参阅使用公用表表达式 。 ?这里举例说明如下: ?为了描述方便,邀月特地列举了一个常见的自关联Table 表结构如下: CREATE TABLE [dbo].[CategorySelf]( ??? [PKID] [int] IDENTITY(1,1) NOT NULL, ??? [C_Name] [nvarchar](50) NOT NULL, ??? [C_Level] [int] NOT NULL, ??? [C_Code] [nvarchar](255) NULL, ??? [C_Parent] [int] NOT NULL, 牋?[InsertTime] [datetime] NOT NULL, 牋?[InsertUser] [nvarchar](50) NULL, 牋?[UpdateTime] [datetime] NOT NULL, 牋?[UpdateUser] [nvarchar](50) NULL, 牋?[SortLevel] [int] NOT NULL, 牋?[CurrState] [smallint] NOT NULL, 牋?[F1] [int] NOT NULL, 牋?[F2] [nvarchar](255) NULL 燙ONSTRAINT [PK_OBJECTCATEGORYSELF] PRIMARY KEY CLUSTERED ( 牋?[PKID] ASC )WITH (PAD_INDEX?= OFF, STATISTICS_NORECOMPUTE?= OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS?= ON, ALLOW_PAGE_LOCKS?= ON) ON [PRIMARY] ) ON [PRIMARY] GO 再插入一些测试数据 INSERT INTO [CategorySelf]([C_Name],[C_Level] ,[C_Code],[C_Parent] ,[InsertTime] ,[InsertUser] ,[UpdateTime]? ,[UpdateUser]? ,[SortLevel]? ,[CurrState]? ,[F1]? ,[F2]) select 分类1,1,0,0,GETDATE(),testUser,DATEADD(dd,1,getdate()),CrackUser,1

文档评论(0)

000 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档