APPLY運算符涉及如下兩個步驟中的一步或兩步(取決於APPLY的類型):
1.A1把右表表達式應用於左表的行。
2.A2:添加外部行。
Apply運算符把右表表達式應用左輸入中的每一行。右表表達式能夠引用左輸入中的列,對於左表中的每一行,都要計算一次右邊輸入的表達式。這一步會把左邊的每一行和來自右表達式的相應行進行匹配,並將生成的結果集合並起來,返回組合後的結果。
Cross Apply和OUTER APPLY老是包含步驟A1,只有OUT APPLY才包含步驟A2。
若是內部(右)表表達式爲外部(左)行返回的是空集,則CROSS APPLY不會返回該外部(左)行。而OUTER APPLY會返回這樣的行,對於內表表達式的屬性,則使用NULL做爲其佔位符。
例:如下查詢返回類別爲汽車的兩個表中的數據:
SELECT p.[d_id] ,
p.[c_title] ,
p.[e_title] ,
p.[d_time] ,
a.d_title
FROM [DingTai].[dbo].[D_News_Product] AS p
CROSS APPLY
( SELECT c.d_id ,
d_title ,
c.d_time
FROM dbo.D_Category AS c
WHERE c.d_id = p.class_one
--ORDER BY c.d_id DESC
) AS a
GO
------------------------返回結果---------------------
*若是想返回不包含類爲汽車的數據則用OUT APPLY:
SELECT p.[d_id] ,
p.[c_title] ,
p.[e_title] ,
p.[d_time] ,
a.d_title
FROM [DingTai].[dbo].[D_News_Product] AS p
OUTER APPLY ( SELECT c.d_id ,
d_title ,
c.d_time
FROM dbo.D_Category AS c
WHERE c.d_id = p.class_one
--ORDER BY c.d_id DESC
) AS a
GO
-----------------------結果------------------------------------------------------
-----------補充單詞知識------------------------------------------------------------
apply
|
英 [əˈplaɪ]
|
美 [əˈplaɪ]
|
vi.
|
申請,請求,適用; 適用,適合; 專心致志;
|
[例句]I am continuing to
apply for jobs
我正在繼續找工做。
Copyright © 2017
程英暾. All Rights Reserved.