SQLServer基礎:Apply關鍵字用法介紹

1、概念介紹

APPLy關鍵字是SQLServer版本中開始提供的一個系統關鍵字。

APPLY的功能同聯接很類似,APPLY運算分左右兩個部分,

APPLY的右表達式:左表達式的每一行都和右表達式進行一次計算,即右表達式需要根據左表達式提供的值進行相關計算來獲取相關結果,然后返回給客戶端。

APPLY的右表達式:是一個子查詢或表值函數。

2、APPLY運算符和聯接查詢區別

APPLY:先進行左表達式的數據獲取,然后根據左表達式的記錄依次對右表達式的值進行相關獲取。

聯接:先對左右兩張表進行笛卡爾乘積運算。

3、APPLY運算符的語法格式

CROSS APPLY:內部聯接,兩張表直接連接,不需要任何的關聯條件,產生的結果就是這兩張表的笛卡兒集等價于CROSS JOIN;

CROSS Apply 和 CROSS JOIN的區別:Cross Apply 可以在關聯表子查詢中用前一個關聯表的字段的值,CROSS JOIN不可以。

比如:

SELECT * FROM t1 a CROSS APPLY t2 b WHERE a.id=b.id 
--相當于 inner join 
SELECT * FROM t1 a CROSS JOIN t2 b WHERE a.id=b.id --報錯

OUTER APPLY:左外聯接,右側的表表達式返回一個空集合,CROSS APPLY運算符不會返回相應的左側行,即OUTER APPLY和在派生表上進行LEFT JOIN是等同的

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

4、Cross Apply 用途

4.1 配合表值函數使用

如果查詢結果集需要用到表值函數對某個字段的值進行處理的話,可以使用CROSS APPLY。

4.2 top子查詢的用法

-- 查詢語文第一名,數學前兩名,英語前五名的name,學科,分數,用cross apply實現方法如下

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

IT技術分享社區

個人博客網站:https://programmerblog.xyz

文章推薦程序員效率:畫流程圖常用的工具程序員效率:整理常用的在線筆記軟件遠程辦公:常用的遠程協助軟件,你都知道嗎?51單片機程序下載、ISP及串口基礎知識硬件:斷路器、接觸器、繼電器基礎知識

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/270772.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/270772.shtml
英文地址,請注明出處:http://en.pswp.cn/news/270772.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

asp命令執行語句】_2分鐘教你使用ASP.NET CORE創建并發布網頁應用

>> 點擊上方 懶人MES 關注我們準備環境: 只需要下載并安裝 .NET CORE SDK 3.1(推薦3.1)微軟官方下載地址: https://dotnet.microsoft.com/download/dotnet-core不需要Visual Studio, 也不需要VS Code, 一切操作都只在CMD命令行中完成, 而且只需要執行5條命令,…

蘋果計算機磁盤格式,蘋果電腦如何完全寫入NTFS格式磁盤

很多在使用Mac的用戶可能都發現了,Mac有時候不能正常使用NTFS格式磁盤。無論是U盤、硬盤、軟盤還是其他的NTFS格式分區,mac在使用它們的時候只能有訪問讀取的權限,但想要修改、刪除、存在文件則無法實現。為解決這一問題,小編今天…

事物與數據庫底層數據

事物與數據庫底層數據 在事物進行過程中,未結束之前,DML語句是不會更改底層數據,只是將歷史操作記錄一下,在內存中完成記錄。只有在事物結束的時候,而且是成功的結束的時候,才會修改底層硬盤文件中的數據

電腦知識:分享幾款常用的截屏方法,歡迎收藏

目錄 1、Windows系統自帶截圖工具 2、截屏軟件 3、聊天軟件 4、Windows系統自帶有截屏的快捷鍵 5、瀏覽器截屏 6、手機拍照 今天小編給大家介紹幾個常用截屏的方法,希望對大家的日常辦公能有所幫助! 1、Windows系統自帶截圖工具 點擊左下角開始菜單在“…

R語言-排序

1 > c 2 [1] 1 2 3 4 5 6 1 3 3 > sort(c) 4 [1] 1 1 2 3 3 4 5 6 5 > order(c) 6 [1] 1 7 2 3 8 4 5 6 sort與order都是對向量排序,sort返回的是向量排序后的值(小-大),order是對向量排序,然后返回向量的索引…

eigen 編譯_頭條 | 使用eigen實現四元數、歐拉角、旋轉矩陣、旋轉向量間的轉換...

點擊上方藍字,關注本公眾號,獲得更多資源上一篇文章介紹了四元數、歐拉角、旋轉矩陣、軸角如何相互轉換,本篇文章介紹如何用eigen來實現。旋轉向量1,初始化旋轉向量:旋轉角為alpha,旋轉軸為(x,y,z)Eigen::A…

火炬之光2找不到服務器,火炬之光2無法運行解決辦法詳細介紹

火炬之光2無法運行解決辦法詳細介紹2012-09-28 15:23:07來源:游戲下載編輯:評論(0)不少玩家在安裝了火炬之光2游戲后無法運行,小編特此為你找了幾種的解決辦法,下面一起來看一下火炬之光2無法運行的問題及解決辦法:如果…

Spring AOP?/?AspectJ AOP?的區別?

Spring AOP / AspectJ AOP 的區別? Spring AOP屬于運行時增強,而AspectJ是編譯時增強。 Spring AOP基于代理(Proxying),而AspectJ基于字節碼操作(Bytecode Manipulation)。 AspectJ相比于Spr…

硬件知識:獨立顯卡和集成顯卡的區別

目錄 1、獨立顯卡 2、集成顯卡 3、獨立顯卡與集成顯卡性能上的區別 今天給大家介紹一下獨立顯卡和集成顯卡的區別,希望對大家能有所幫助! 1、獨立顯卡 獨立顯卡是將顯示芯片及相關器件制作成一個獨立于電腦主板的板卡,成為專門的圖像處理硬件…

『OPEN3D』1.1 點云處理

目錄 1.open3d中的點云IO 2.點云的可視化 3 點云voxel下采樣 4. 頂點法線估計 5.最小外界矩 6. 凸包計算 7. 點云距離計算 8. DBSCAN clustering聚類 9. RANSAC(Random Sample Consensus) 10. 點云平面分割 11. 隱藏點移除 12.outliers移除 13 最遠點采樣&#xf…

c 多線程map_Rust:一個不再有 C/C++ 的,實現安全實時軟件的未來

作者丨lochsh譯者丨馬可薇策劃丨王文婧Rust 作為新興編程語言深受 Haskell 和 OCaml 等函數式編程語言的影響,使得它在語法上與 C 類似,但在語義上則完全不同。Rust 是靜態類型語言,同時具有完整類型推斷,而不是 C 的部分類型推斷…

SQLServer中交叉聯接的用法介紹

目錄 1、交叉聯接(cross join)的概念 2、交叉聯接的語法格式 3、交叉查詢的使用場景 3.1 交叉聯接可以查詢全部數據 3.2 交叉聯接優化查詢性能 4、總結 今天給大家介紹SQLServer中交叉聯接的用法,希望對大家能有所幫助! 1、交叉聯接(cross join)的概念 交…

計算機有關的文獻檢索題目,文獻檢索第二次計算機檢索實習題目(2016.4.10).doc

文檔介紹:第二次計算機檢索實****題目本次實****目的是使學生對以下三個外文數據庫:PENDEX數據庫、荷蘭SDOS數據庫、德國Springer數據庫的使用方法有所了解。通過題目,使學生分別掌握每個數據庫所提供的各種獲取文獻的方法,包括瀏覽和檢索的方法,并通過各種算符的組…

spring中的IOC和AOP

IOC IOC(Inversion Of Controll,控制反轉)是一種設計思想,將原本在程序中手動創建對象的控制權,交由給Spring框架來管理。IOC容器是Spring用來實現IOC的載體,IOC容器實際上就是一個Map(key, value)&#x…

HDU1598【最小生成樹拓展】

參考自 http://www.cnblogs.com/nanke/archive/2012/02/13/2350008.html PS: 沒想到最小生成樹的kruskal算法從小到大枚舉邊,然后MAX-MIN就保證了最小。 不過居然沒想到這個方案,就是二分枚舉差值,然后跑最短路; 轉載于:https://w…

python圖表可視化工具_比Excel制圖更強大,Python可視化工具Altair入門教程

原作者 Parul Pandey曉查 編譯整理量子位 出品 | 公眾號 QbitAI數據轉化成更直觀的圖片,對于理解數據背后的真相很有幫助。如果你有這方面的需求,而且還在使用Python,那么強烈推薦你試一試Altair。Altair是一個專為Python編寫的可視化軟件包&…

后端技術:SpringBoot配置熱加載工具(devtools)筆記

今天給大家介紹IDEA開發工具如何配置devtools熱加載工具。1、devtools原理介紹spring-boot-devtools是spring為開發者提供的熱加載工具包。主要原理是使用了兩個ClassLoader類加載器,一個Classloader加載那些不會改變的類(第三方Jar包)&#…

關于ios手機上傳圖片旋轉問題的解決

先占個坑,一會完善!! 轉載于:https://www.cnblogs.com/zhuyu/articles/5943400.html

服務器不能創建對象教務系統,[轉]解決強智教務系統非IE下無法創建對象錯誤...

最近要弄教務網的模擬登陸,但苦于教務網只兼容IE8以下的瀏覽器,不能用chrome強大的F12抓包就很煩,然后發現Fly俊大佬弄了一個相當強的插件啊。但是怕Fly俊大佬的博客失效,所以私自留了個檔。侵刪啊大佬~以下內容均為轉載學校教務系…

Java8對List<Integer>的求和

一般都是對對象對某個字段求和&#xff0c;對List<Object>中Object中的某個字段進行求和&#xff0c;就像這樣&#xff1a; 如果想要用流對List<Integer>進行求和&#xff0c;如下 long sum receiveTotalPriceList.stream().reduce(Integer::sum).orElse(0);