SQL 中with的用法
SQL 中with的用法如下:
CTE 之后必须跟随引用部分或全部 CTE 列的 SELECT、INSERT、UPDATE 或 DELETE 语句。也可以在 CREATE VIEW 语句中将 CTE 指定为视图中 SELECT 定义语句的一部分。
可以在非递归 CTE 中定义多个 CTE 查询定义。定义必须与以下集合运算符之一结合使用:UNION ALL、UNION、INTERSECT 或 EXCEPT。
CTE 可以引用自身,也可以引用在同一 WITH 子句中预先定义的 CTE。不允许前向引用。
不允许在一个 CTE 中指定多个 WITH 子句。例如,如果 CTE_query_definition 包含一个子查询,则该子查询不能包括定义另一个 CTE 的嵌套的 WITH 子句。
不能在 CTE_query_definition 中使用以下子句:
COMPUTE 或 COMPUTE BY
ORDER BY(除非指定了 TOP 子句)
INTO
带有查询提示的 OPTION 子句
FOR XML
FOR BROWSE
扩展资料
定义和使用递归 CTE 指南
下列指南适用于定义递归 CTE 的情况:
递归 CTE 定义至少必须包含两个 CTE 查询定义,一个定位点成员和一个递归成员。可以定义多个定位点成员和递归成员;但必须将所有定位点成员查询定义置于第一个递归成员定义之前。所有 CTE 查询定义都是定位点成员,但它们引用 CTE 本身时除外。
定位点成员必须与以下集合运算符之一结合使用:UNION ALL、UNION、INTERSECT 或 EXCEPT。在最后一个定位点成员和第一个递归成员之间,以及组合多个递归成员时,只能使用 UNION ALL 集合运算符。
定位点成员和递归成员中的列数必须一致。
递归成员中列的数据类型必须与定位点成员中相应列的数据类型一致。
递归成员的 FROM 子句只能引用一次 CTE expression_name。
在递归成员的 CTE_query_definition 中不允许出现下列项:
1、with表示状态时,还可作“跟上…”“听懂…的话”解,一般用于疑问句或否定句中。
2、with表示关系时还可作“与…合并〔混合,组合〕”解。
3、with表示伴随状态时,作“以与…同样的方向〔程度,比率〕”解。可接“名词+动词不定式”“名词+现在分词”“名词+过去分词”。
4、with表示比较时作“同…相比”“与…平行”解。
5、with可以用来表示虚拟语气,意思是“如果,假如”。用于诗歌或民谣的副歌、叠句中,with常无实际含意。
6、在with的前面加away,down等词时,可作为不用动词的命令格式。
扩展资料
近义词:and
读音:英 [ənd , ænd] 美 [ənd , ænd]
释义:和,与,同,又。
语法:and用作连词,主要用来连接两个或两个以上的词、短语或句子。and连接两个相同的词语可用以加强语气或表示动作的反复或一再发生。常用and连接十位数和百位数。两个名词被and连接,如前一名词带冠词,后一名词不带冠词,则整个结构表示一个整体。
例句:
All through yesterday crowds have been arriving and by midnight thousands of people packed the square.
昨天陆续有大批人到来,午夜时有几千人聚集在广场上。
1、with常指在观点或主张上与某人采取一致的态度,意思是“与…一致”“与…站在一边”,但有时也可指“与…对抗”“站在…的对立面”。
2、with表示使用某工具。
3、如同时表示工具和材料时,应用with。
4、with表示交际的动作一般是双向的,在美式英语中有时也可表示单向动作。
5、with后的宾语后所接的形容词,过去分词或名词都可作表语。
扩展资料
反义词:without
读音:英 [wɪˈðaʊt] 美 [wɪˈðaʊt]
释义:没有,缺乏,不和…在一起。
语法:without作“无,没有”解时其后可接动名词(短语),表示“没有做某事”,动名词短语中动名词常可省略。在口语中,without后的宾语如可在上下文中找到或笼统地指一种状况而不是指任何具体事物,则该宾语可省略。
例句:
Janet Magnusson watched his approach without enthusiasm
珍妮特·马格努森冷冷地看着他走过来。
1). 可用来定义一个SQL片断,该片断会被整个SQL语句所用到。
2). 为了让SQL语句的可读性更高
3). 也有可能是在UNION ALL的不同部分,作为提供数据的部分。特别对于UNION ALL比较有
用。因为UNION ALL的每个部分可能相同,但是如果每个部分都去执行一遍的话,则成本
太高,所以可以使用WITH AS短语,则只要执行一遍即可。
例如:下面两种表达的是同一种意思:
①with alias as (select * from pra)
②select * from pra;
select * from a;
其实就是把一大堆重复用到的SQL语句放在with as 里面,取一个别名,后面的查询就可以用它