成熟丰满熟妇高潮XXXXX,人妻无码AV中文系列久久兔费 ,国产精品一国产精品,国精品午夜福利视频不卡麻豆

您好,歡迎來(lái)到九壹網(wǎng)。
搜索
您的當(dāng)前位置:首頁(yè)【數(shù)據(jù)庫(kù)】數(shù)據(jù)庫(kù)中with...as...的用法

【數(shù)據(jù)庫(kù)】數(shù)據(jù)庫(kù)中with...as...的用法

來(lái)源:九壹網(wǎng)

一.WITH AS的含義 WITH AS短語(yǔ),也叫做子查詢部分(subquery factoring),對(duì)于UNION ALL比較有用。因?yàn)閁NION ALL的每個(gè)部分可能相同,但是如果每個(gè)部分都去執(zhí)行一遍的話,則成本太高,所以可以使用WITH AS短語(yǔ),則只要執(zhí)行一遍即可。如果WITH AS短語(yǔ)所定義

一.WITH AS的含義

WITH AS短語(yǔ),也叫做子查詢部分(subquery factoring),對(duì)于UNION ALL比較有用。因?yàn)閁NION ALL的每個(gè)部分可能相同,但是如果每個(gè)部分都去執(zhí)行一遍的話,則成本太高,所以可以使用WITH AS短語(yǔ),則只要執(zhí)行一遍即可。如果WITH AS短語(yǔ)所定義的表名被調(diào)用兩次以上,則優(yōu)化器會(huì)自動(dòng)將WITH AS短語(yǔ)所獲取的數(shù)據(jù)放入一個(gè)TEMP表里,如果只是被調(diào)用一次,則不會(huì)。而提示materialize則是強(qiáng)制將WITH AS短語(yǔ)里的數(shù)據(jù)放入一個(gè)全局臨時(shí)表里。

二.語(yǔ)法

[ WITH  [ ,n ] ]
::=
 expression_name [ ( column_name [ ,n ] ) ]
 AS( CTE_query_definition )

現(xiàn)在使用CTE來(lái)解決上面的問(wèn)題,SQL語(yǔ)句如下:

With cr as(
 select CountryRegionCode from person.CountryRegion where Name like 'C%'
)
select * from person.StateProvince where CountryRegionCode in (select * from cr)

在使用CTE時(shí)應(yīng)注意如下幾點(diǎn):

1. CTE后面必須直接跟使用CTE的SQL語(yǔ)句(如select、insert、update等),否則,CTE將失效。如下面的SQL語(yǔ)句將無(wú)法正常使用CTE:

with cr as
(
 select CountryRegionCode from person.CountryRegion where Name like 'C%'
)
select * from person.CountryRegion 
-- 應(yīng)將這條SQL語(yǔ)句去掉

-- 使用CTE的SQL語(yǔ)句應(yīng)緊跟在相關(guān)的CTE后面 --

select * from person.StateProvince where CountryRegionCode in (select * from cr)
2. CTE后面也可以跟其他的CTE,但只能使用一個(gè)with,多個(gè)CTE中間用逗號(hào)(,)分隔,如下面的SQL語(yǔ)句所示:

With cte1 as(
 select * from table1 where name like 'abc%'
),
cte2 as(
 select * from table2 where id > 20
),
cte3 as(
 select * from table3 where price < 100
)
select a.* from cte1 a, cte2 b, cte3 c where a.id = b.id and a.id = c.id
3. 如果CTE的表達(dá)式名稱與某個(gè)數(shù)據(jù)表或視圖重名,則緊跟在該CTE后面的SQL語(yǔ)句使用的仍然是CTE,當(dāng)然,后面的SQL語(yǔ)句使用的就是數(shù)據(jù)表或視圖了,如下面的SQL語(yǔ)句所示:
-- table1是一個(gè)實(shí)際存在的表
With table1 as
(
 select * from persons where age < 30
)
select * from table1 -- 使用了名為table1的公共表表達(dá)式
select * from table1 -- 使用了名為table1的數(shù)據(jù)表

4. CTE 可以引用自身,也可以引用在同一 WITH 子句中預(yù)先定義的 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 用在屬于批處理的一部分的語(yǔ)句中,那么在它之前的語(yǔ)句必須以分號(hào)結(jié)尾,如下面的SQL所示:

declare @s nvarchar(3)
set @s = 'C%'
; -- 必須加分號(hào)
with t_tree as
(
 select CountryRegionCode from person.CountryRegion where Name like @s
)
select * from person.StateProvince where CountryRegionCode in (select * from t_tree)

Copyright ? 2019- 91gzw.com 版權(quán)所有 湘ICP備2023023988號(hào)-2

違法及侵權(quán)請(qǐng)聯(lián)系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市萬(wàn)商天勤律師事務(wù)所王興未律師提供法律服務(wù)