SQL中 with as 的用法——使用公用表表达式(CTE)
公用表表达式 (CTE) 可以认为是在单个 SELECT、INSERT、UPDATE、DELETE 或 CREATE VIEW 语句的执行范围内定义的临时结果集。CTE 与派生表类似,具体表现在不存储为对象,并且只在查询期间有效。与派生表的不同之处在于,CTE 可自引用,还可在同一查询中引用多次。
CTE 可用于:
创建递归查询。
在不需要常规使用视图时替换视图,也就是说,不必将定义存储在元数据中。 启用按从标量嵌套 select 语句派生的列进行分组,或者按不确定性函数或有外部访问的函数进行分组。
在同一语句中多次引用生成的表。
使用 CTE 可以获得提高可读性和轻松维护复杂查询的优点。查询可以分为单独块、简单块、逻辑生成块。之后,这些简单块可用于生成更复杂的临时 CTE,直到生成最终结果集。
可以在用户定义的例程(如函数、存储过程、触发器或视图)中定义 CTE。 CTE 的结构
CTE 由表示 CTE 的表达式名称、可选列列表和定义 CTE 的查询组成。定义 CTE 后,可以在 SELECT、INSERT、UPDATE 或 DELETE 语句中对其进行引用,就像引用表或视图一样。CTE 也可用于 CREATE VIEW 语句,作为定义 SELECT 语句的一部分。
CTE 的基本语法结构如下:
WITH expression_name [ ( column_name [,...n] ) ]
AS
( CTE_query_definition )
只有在查询定义中为所有结果列都提供了不同的名称时,列名称列表才是可选的。
运行 CTE 的语句为:
SELECT <column_list>
FROM expression_name
示例:
with s_name as
(
select s.name, sc.c,sc.grade from SQL Server student AS s,sc where s.s#=sc.s#
)
select * from s_name
在使用CTE时应注意如下几点:
1. CTE后面必须直接跟使用CTE的SQL语句(如select、insert、update等),否则,CTE将失效。
2. CTE后面也可以跟其他的CTE,但只能使用一个with,多个CTE中间用逗号(,)分隔。
3. 如果CTE的表达式名称与某个数据表或视图重名,则紧跟在该CTE后面的SQL语句使用的仍然是CTE,当然,后面的SQL语句使用的就是数据表或视图了。
4. CTE 可以引用自身(递归查询),也可以引用在同一 WITH 子句中预先定义的 CTE。不允许前向引用。
5. 不能在 CTE_query_definition 中使用以下子句:
(1)COMPUTE 或 COMPUTE BY
(2)ORDER BY(除非指定了 TOP 子句)
(3)INTO
(4)带有查询提示的 OPTION 子句
(5)FOR XML
(6)FOR BROWSE
6. 如果将 CTE 用在属于批处理的一部分的语句中,那么在它之前的语句必须以分号结尾
这个评论是水本文是发人深省的教我们学会思考的老鱼和幼鱼的故事不在自己的直接经验的和以自我为中心的作者阐述了我们开始相信我们在浩如烟…
TheReviewWritingofThisisWaterTheauthorDavidFosterWallacewasconsideredbymany…
AReviewofThisisWaterItisacommencementspeechgivenbyDavidFosterWallacetothe20…
MyFeelingALittlePrinceLittlePrinceisaclearspiritualbookasclearasthewateriti…
WutheringheightsEmilypublishedonlyonenovelWutheringHeightsbutthissinglework…
with用法小结一、with表拥有某物1、Marymarriedamanwithalotofmoney.马莉嫁给了一个有着很多钱的…
介词with的用法大全With是个介词,基本的意思是“用”,但它也可以协助构成一个极为多采多姿的句型,在句子中起两种作用;副词与形…
It的用法专项总结及训练学生版一人称代词1it的最基本用法是作代词主要指刚提到的事物以避免重复Theywatchedthetrai…
It的用法专项总结及训练教师版一人称代词1it的最基本用法是作代词主要指刚提到的事物以避免重复Theywatchedthetrai…
with在下列结构中起副词作用1quotwith宾语现在分词或短语quot如1Thisarticledealswithcommon…
一、介词with的用法withprep.其主要词义包括“有,以,用,同...,由于,和...一致,赞成,关于......”等21种…