自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

SQL Server基礎(chǔ):Apply關(guān)鍵字用法介紹

數(shù)據(jù)庫 SQL Server
APPLy關(guān)鍵字是SQLServer版本中開始提供的一個系統(tǒng)關(guān)鍵字。APPLY的功能同聯(lián)接很類似,APPLY運算分左右兩個部分.

[[393784]]

1、概念介紹

APPLy關(guān)鍵字是SQLServer版本中開始提供的一個系統(tǒng)關(guān)鍵字。

APPLY的功能同聯(lián)接很類似,APPLY運算分左右兩個部分,

APPLY的右表達(dá)式:左表達(dá)式的每一行都和右表達(dá)式進(jìn)行一次計算,即右表達(dá)式需要根據(jù)左表達(dá)式提供的值進(jìn)行相關(guān)計算來獲取相關(guān)結(jié)果,然后返回給客戶端。

APPLY的右表達(dá)式:是一個子查詢或表值函數(shù)。

2、APPLY運算符和聯(lián)接查詢區(qū)別

APPLY:先進(jìn)行左表達(dá)式的數(shù)據(jù)獲取,然后根據(jù)左表達(dá)式的記錄依次對右表達(dá)式的值進(jìn)行相關(guān)獲取。

聯(lián)接:先對左右兩張表進(jìn)行笛卡爾乘積運算。

3、APPLY運算符的語法格式

CROSS APPLY:內(nèi)部聯(lián)接,兩張表直接連接,不需要任何的關(guān)聯(lián)條件,產(chǎn)生的結(jié)果就是這兩張表的笛卡兒集等價于CROSS JOIN;

CROSS Apply 和 CROSS JOIN的區(qū)別:Cross Apply 可以在關(guān)聯(lián)表子查詢中用前一個關(guān)聯(lián)表的字段的值,CROSS JOIN不可以。

比如:

  1. SELECT * FROM t1 a CROSS APPLY t2 b WHERE a.id=b.id  
  2. --相當(dāng)于 inner join  
  3. SELECT * FROM t1 a CROSS JOIN t2 b WHERE a.id=b.id --報錯 

OUTER APPLY:左外聯(lián)接,右側(cè)的表表達(dá)式返回一個空集合,CROSS APPLY運算符不會返回相應(yīng)的左側(cè)行,即OUTER APPLY和在派生表上進(jìn)行LEFT JOIN是等同的

  1. SELECT * FROM t1 a OUTER APPLY (select * from t2 where id=a.id) b  
  2. -- 相當(dāng)于 left join。 

4、Cross Apply 用途

4.1 配合表值函數(shù)使用

如果查詢結(jié)果集需要用到表值函數(shù)對某個字段的值進(jìn)行處理的話,可以使用CROSS APPLY。

4.2 top子查詢的用法

-- 查詢語文第一名,數(shù)學(xué)前兩名,英語前五名的name,學(xué)科,分?jǐn)?shù),用cross apply實現(xiàn)方法如下

  1. SELECT b.* FROM ( 
  2. select Subject='Chiness',num=1  
  3. union all 
  4. select 'Math',3 union all 
  5. select 'English',5 
  6. )a cross apply (select top(a.num) * from Students  
  7. where Subject=a.Subject )b 

 

責(zé)任編輯:姜華 來源: IT技術(shù)分享社區(qū)
相關(guān)推薦

2021-10-13 06:49:13

SQL Server優(yōu)化

2011-06-21 09:50:51

volatile

2010-11-12 14:49:28

SQL Server外

2009-08-21 14:58:56

C# this關(guān)鍵字

2010-07-23 14:32:43

SQL Server

2009-12-17 13:57:15

Ruby關(guān)鍵字

2023-11-10 09:29:30

MySQLExplain

2011-02-25 14:42:10

SQLwith關(guān)鍵字

2024-12-26 00:28:59

C#base?關(guān)鍵字

2024-06-04 17:02:38

newC#編程語言

2011-06-27 15:08:15

SEO

2013-01-30 10:12:14

Pythonyield

2018-04-20 15:56:09

Pythonglobal關(guān)鍵字

2021-08-26 09:50:06

鴻蒙HarmonyOS應(yīng)用

2009-09-02 09:24:03

C# this關(guān)鍵字

2009-09-17 09:30:00

Linq LET關(guān)鍵字

2012-03-01 12:50:03

Java

2022-01-04 16:35:42

C++Protected關(guān)鍵字

2010-05-10 11:16:14

Oracle ESCA

2009-09-07 18:53:46

static關(guān)鍵字
點贊
收藏

51CTO技術(shù)棧公眾號