SQLServer子查詢相關知識筆記


今天給大家介紹以下SQLServer子查詢相關知識,希望對大家能有所幫助!

1、子查詢概念介紹

子查詢可以嵌套在SELECT、INSERT、UPDATE、DELETE語句或其他子查詢語句中的查詢,子查詢一般作為查詢中間結果集角色,子查詢也稱為內部查詢或內部選擇,包含子查詢的語句稱為外部查詢或外部選擇。根據可用系統內存和查詢中其他表達式的復雜程度的不同,嵌套限制也有所不同,一般可以支持嵌套32層。個人建議盡量避免多層嵌套這樣SQL語句的可讀性和可維護性都會很差。使用表達式的地方一般都可以使用子查詢。

2、子查詢分類

單值子查詢:子查詢的返回值屬于單個。常見與查詢列、單值的查詢條件使用。

多值子查詢:子查詢的返回值多個。常見in、exists等篩選語句使用。

3、子查詢的使用場景

3.1 選擇列表中使用子查詢

選擇列表中使用子查詢作為查詢結果一列值出現的。該情況下調用子查詢返回的只能是單值。只能是單值子查詢。

-- 查詢學生姓名、年齡、總成績select a.username,a.age,(select sum(score) 
from Score where userId=a.userId)) totalScorefrom UserInfo a
3.2 作為查詢條件

-- 查詢部門名稱是技術部的員工信息 單值查詢
select?username,age,address?from?Emp
where deptno=(select top 1 deptno 
from DeptInfo where depName='技術部');
-- 查詢產品庫存大于10噸的產品列表 多值查詢
select name,code from ProductInfo
where Code in (select s.code from StockInfo s where qty>20);
同樣的insert、update、delete用法比較類似比如:
-- 刪除庫存量為0的產品
delete from ProductInfo
where Code in (select s.code from StockInfo s where qty=0);
-- 更新庫存量為0的產品remark字段更新為標記
update ProductInfo set remark='標記'
where Code in (select s.code from StockInfo s where qty=0)

4、子查詢和連接查詢的關系

很多包含子查詢的SQL語句都可以改成連接查詢的形式表示,包含子查詢的語句和語義上等效的無子查詢的語句性能差別不大。但針對檢查存在性的情況中,聯接查詢性能更好,數據量越大聯接查詢會更能體現效率。

比如:

-- 查詢學生姓名、年齡、總成績
select min(a.username),min(a.age),sum(score) totalScore
from UserInfo a 
left join Score b on a.userId=b.userId

5、包含in和exists子查詢區別

in子查詢:結果是包含0個或者多個值的列表,表示值的等于關系。

exists子查詢:它只返回true或false。表示一種存在的行為。

通常情況下in和exist可以互換。

當子查詢結果不存在NULL值時,not in和not exists得到的查詢結果一樣,所生成的查詢計劃也一樣。

當in里面的值為null的情況下查詢記錄為0;當exists里面的值為null情況下相當于查詢條件不起作用。

示例:

select name,age UserInfo where userId in (1,2,3,4);
select name,age UserInfo where exists (1,2,3,4);

說明:EXISTS與IN的使用效率的問題,通常情況下采用exists要比in效率高,但要看實際情況具體使用:IN適合于外表大而內表小的情況;EXISTS適合于外表小而內表大的情況。

6、包含比較運算符的子查詢

子查詢可以由一個比較運算符(=、<>、>、>=、<、!>、!<或<=)引入。使用比較運算符引入的子查詢必須返回單個值而不能一個值列表。否則,SQL Server將顯示一條錯誤信息。

IT技術分享社區

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

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

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

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

相關文章

使用react的好處_react的優點是什么呀-問答-阿里云開發者社區-阿里云

首先react通過介紹新的聲明式語法JSX來重新定義視圖開發,優點其實官網就有,不過我可以簡單說兩句:第一,學會了react以及這個JSX語法,你不光可以通過react寫web;也可以通過react-native寫ios或者android的應…

Linux運行級詳解

對于那些在DOS/Win9x/NT平臺下的高級用戶而言,Linux似乎是一個怪物。沒有config.sys,沒有 autoexec.bat,具有個人特色的機器配置不知道從何開始。 需要說明的是,很多人認為Linux是Unix的一個克隆,但是,這種…

軟件:推薦八款電腦實用軟件,你都用過嗎?

今天給大家推薦八款電腦非常實用的軟件,希望對大家能有所幫助!1、Audio Hijack Pro一款Mac 上的錄音軟件。它比較強大的功能是可以錄制多個應用的聲音,然后組合成一個結果,然后輸出。2、快貼一個跨平臺剪切板同步軟件。你只需要簡…

計算機芯片級維修包括哪些,電腦芯片級維修教程

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓讓你足不出門,就能像在培訓班里學芯片級維修一樣,也能成為一位硬件維修工程師。給你節省上千的學費。全部資料從基礎學起,沒電子電路基礎的朋友一樣能很快的上手。讓你開一家專業的計算機硬件芯片…

matlab 神經網絡設計多層隱含層_數據預測之BP神經網絡具體應用以及matlab代碼

1.具體應用實例。根據表2,預測序號15的跳高成績。表2 國內男子跳高運動員各項素質指標序號跳高成績()30行進跑(s)立定三級跳遠()助跑摸高()助跑4—6步跳高()負重深蹲杠鈴()杠鈴半蹲系數100(s)抓舉()12.243.29.63.452.151402.811.05022.333.210.33.752.21203.410.970…

硬件:開機如何進BIOS,U盤啟動快捷鍵一鍵查詢

??作者主頁:IT技術分享社區 ??作者簡介:大家好,我是IT技術分享社區的博主,從事C#、Java開發九年,對數據庫、C#、Java、前端、運維、電腦技巧等經驗豐富。 ??個人榮譽: 數據庫領域優質創作者🏆&#x…

考研計算機專業課統考嗎,09考研計算機專業課統考增至4部分內容

北京考試報訊(記者 陳霄飛) 全國碩士研究生統一入學考試計算機科學與技術學科的初試專業課考試明年將實行聯考。有關考研輔導專家認為,針對初試專業課調整為4部分內容的情況,計劃報考該專業的考生要提早調整復習計劃,適當擴大復習范圍。初試專…

強制關機對電腦的傷害你有必要了解一下

不管你的電腦新舊與否,我想大家肯定都遇到過死機、卡頓無反應的情況吧,這個時候無論是電腦高手還是萌新小白同場都會采用一個相同的解決方案,對,那就是直接關機。 當然遇到這種情況,長按電源鍵10秒強制關機&#xff0c…

嵌入式計算機的發展階段,嵌入式發展經歷了哪四個階段?

從上個世紀70年代單片機的出現到今天,應用,嵌入式系統少說也有近30年的歷史了。可以說嵌入式系統經歷了發展的4個階段。今天小編就為大家分享一下嵌入式系統發展的4個主要階段:1、無操作系統階段隨著各種嵌入式微處理器、微控制器的廣泛縱觀嵌…

testbench實例 vhdl_學寫 Testbench --- 結構篇VHDL實例

testbench.v:----------------------------------------------------------------------//// File header 具體參考 編碼風格專題//define MAX 20 宏定義include "driver.v"include "monitor.v包含有其他模塊,如果在同一目錄下可以不指定includetime…

操作系統的中斷和異常

中斷和異常 早期的計算機,各程序只能串行執行,系統資源利用率低 中斷機制的誕生 中斷的概念和作用 中斷的分類

【CUDA開發】Thrust庫

Thrust庫從C的STL中得到靈感,將最簡單的類似于STL的結構放在Thrust庫中,比如STL中的vector。此外,Thrust庫還包含STL中的算法和迭代器。Thrust函數庫提供了兩個向量容器,分別為主機和設備提供了向量類并且分別駐留在主機和設備的全…

硬件:臺式機老式鍵盤知識科普

??作者主頁:IT技術分享社區 ??作者簡介:大家好,我是IT技術分享社區的博主,從事C#、Java開發九年,對數據庫、C#、Java、前端、運維、電腦技巧等經驗豐富。 ??個人榮譽: 數據庫領域優質創作者🏆&#x…

高考填報志愿計算機操作技巧,高考志愿填報技巧經驗

高考志愿填報技巧經驗2020-12-30 14:43:23文/葉丹填報技巧:在所有科目考試結束后合理估分,提前參考往年錄取分數線,明確各項重要的時間節點,搜集目標院校資料,查詢目標院校專業近幾年的位次情況,有意向的學…

npz文件轉為npy_numpy的文件存儲 .npy .npz 文件

1)Numpy能夠讀寫磁盤上的文本數據或二進制數據。將數組以二進制格式保存到磁盤np.load和np.save是讀寫磁盤數組數據的兩個主要函數,默認情況下,數組是以未壓縮的原始二進制格式保存在擴展名為.npy的文件中。import numpy as npanp.arange(5)np.save(test…

DML語句

DML語句 DML 操作是指對數據庫中表記錄的操作,主要包括表記錄的插入(insert)、更新(update)、刪除(delete)和查詢(select),是開發人員日常使用最頻繁的操作。…

第四十五篇、UITableViewCell高度計算

由于tableView:heightForRowAtIndexPath:方法的調用頻率非常高,如果將cell高度的計算過程放在此方法中,那么效率將會非常的低,快速tableview就會出現卡頓 1、通過代碼 (在模型當中只計算一次cell高度,然后在方法中直接從模型屬性當…

硬件知識:臺式電腦主機各種接口介紹

??作者主頁:IT技術分享社區 ??作者簡介:大家好,我是IT技術分享社區的博主,從事C#、Java開發九年,對數據庫、C#、Java、前端、運維、電腦技巧等經驗豐富。 ??個人榮譽: 數據庫領域優質創作者🏆&#x…

兩條曲線所圍成的面積_三個視頻搞定:求曲邊梯形面積的思想、微積分基本定理及其幾何意義、微積分理論的可視化解讀、...

● 本文適合高二下學期、高三一輪復習的同學閱讀。先看視頻再看文字,看視頻時注意利用暫停,想清楚每一步變形的依據。01曲邊梯形的面積、微積分基本定理的內容視頻講解1、曲邊梯形的概念及面積求法(1)曲邊梯形:由直線x=a&#xff…