SQL 中with的用法

SQL中with的用法如下:
CTE之后必须跟随引用部分或全部CTE列的SELECT、INSERT、UPDATE或集湖重冷DELETE语句 。也可以在CREATEVIEW语句中将CTE指定为视图中SELECT定义语句的一部分 。
可以在非递归CTE中定线独数台斤交义多个CTE查询定义 。定义必须与以下集合运算符之一结合使困用:UNIONALL、UNION、INTERSECT或EXCEPT 。
CTE可以引用自身,也可以引用在同一 WITH 子句中预先定义的CTE 。不允许前向引用 。
不允许在一个CTE中指定多个 WITH 子句斯倍世 。例如,如果CTE_query_definition包含一个子查询,则该子查询不能包括定义另一美征益等军河实距术笑个CTE的嵌套的 WI算全种题TH 子句 。
不能在CTE_query_definition中使用以下子句:
COMPUTE或COMPUTEBY
ORDERBY(除非指定了TOP子句)
INTO
带有查询提示的OPTION子句
FORXML
FORBROWSE

SQL 中with的用法

文章插图
扩展资料
定义和使用递归CTE指南
下列指南适用于定义递归CTE的情况:
递归CTE定义支境斤盟针至少必须包含两个CTE查询定义,一个定位点成员和一个递归成员 。可以司地草尔组然复定义多个定位点成员和递归成员;但必须将所有定位点成员查询定市甚盟步罗参义置于第一个递归成员定义之前千影久随其顾需段息 。所有CTE查询定义都是定位点成员,但它们前指作席张引用CTE本身时除外 。
定位点成员必须与以下集合运算符之一结合使用:UNIONALL、UNION、INTERSECT或EXCEPT 。在最后一个定位点成员和第一个递归成员之间,以及组合多个递归成员时,只的延夜波武配度末载能使用UNIONA信至轴题作LL集合运算符 。
定位点成员和递归成员中的列数必须一致 。
递归成员中列的数据类型必须与定位点成员中相应列的数据类型一致 。
递归成员的FROM固材绍能资伤响依犯最子句只能引用一次CTEexpression_name 。
在递归成员的CTE_query_definition中不允许出现下列项:
【SQL 中with的用法】

    推荐阅读