from server sql 拼接統計兩個子查詢_[SQL SERVER系列]之嵌套子查詢和相關子查詢

子查詢有兩種類型,一種是只返回一個單值的子查詢,這時它可以用在一個單值可以使用的地方,這時子查詢可以看作是一個擁有返回值的函數;另外一種是返回一列值的子查詢,這時子查詢可以看作是一個在內存中臨時存在的數據表。

1.嵌套子查詢

嵌套子查詢的執行不依賴于外部的查詢。執行過程:

(1)執行子查詢,其結果不被顯示,而是傳遞給外部查詢,作為外部查詢的條件使用。

(2)執行外部查詢,并顯示整個結果。

嵌套子查詢一般可以分為:返回單值的子查詢?和?返回一個列表的子查詢。

--返回單值的子查詢

SElECT 圖書名,作者,出版社,價格 FROM Books

WHERE 價格 >

(

SELECT AVG(價格)? FROM Books

)

--返回列表的子查詢

SElECT * FROM Readers

WHERE 讀者編號 IN

( SELECT 讀者編號 FROM [Borrow History] )

2.相關子查詢

相關子查詢的執行依賴于外部查詢。多數情況下是子查詢的WHERE子句中引用了外部查詢的表。執行過程:

(1)從外層查詢中取出一個元組,將元組相關列的值傳給內層查詢。

(2)執行內層查詢,得到子查詢操作的值。

(3)外查詢根據子查詢返回的結果或結果集得到滿足條件的行。

(4)然后外層查詢取出下一個元組重復做步驟1-3,直到外層的元組全部處理完畢。

--查詢Books表中大于該類圖書價格平均值的圖書信息

SElECT圖書名,出版社,類編號,價格FROM?Books?As?aWHERE價格>(SELECT?AVG(價格)FROM?Books?AS?bWHERE?a.類編號=b.類編號)

使用SQL跨表批量導入數據時實用的例子

利用相關子查詢只插入test2中不存在的記錄,避免因插入重復記錄而失敗

insert into test2(userid, username)

select userid, username from test1

where not exists(

select userid from test2 where

test2.userid = test1.userid

)

EXISTS就是用來測試子查詢的結果是否為空,如果結果集為空則匹配結果為false,否則匹配結果為true。

--如果存在山東省的讀者,將T_Book表中所有記錄查詢出來;否則,查詢結果為空

SELECT?*?FROM?T_Book?WHERE?EXISTS?(SELECT?*?FROM?T_Reader?WHERE?FProvince='ShanDong'?)

--查詢某一類圖書的分類id,最小最大出版年份,數量

select C.FId,

MIN(B.FYearPublished) as minpublished,

MAX(B.FYearPublished) as maxpublished,

COUNT(0) as Number

from T_Category C inner join T_Book B

ON C.FId = B.FCategoryId

group by C.FId

--查詢某一類圖書的分類id,圖書的名稱,最早出版年份

select T_Category.FId, T_Book.FName, T_Book.FYearPublished from

T_Category inner join T_Book

ON T_Category.FId = T_Book.FCategoryId

WHERE T_Book.FYearPublished = (

select MIN(T_Book.FYearPublished) from

T_Book WHERE T_Book.FCategoryId = T_Category.FId

)

3.WITH和子查詢

SQL提供了WITH子句用于為子查詢定義一個別名,這樣就可以通過這個別名來引用這個子查詢了,也就是實現“一次定義多次使用”。

WITH子句的格式為:WITH別名AS?(子查詢)

WITH person_tom AS (

SELECT * FROM T_Person?? WHERE FName='TOM'

)

SELECT * FROM T_Person WHERE FAge=person_tom.FAge OR FSalary=person_tom.FSalary

參考文獻:

1.程序員的sql金典

如果您有什么問題,歡迎在下面評論,我們一起討論,謝謝~

如果您覺得還不錯,不妨點下右下方的推薦,有您的鼓勵我會繼續努力的~

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

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

相關文章

java中包容易出現的錯誤及權限問題

/* 3,權限在不同地方的體現: public protected default private 同一類中: ok ok ok ok 同一包中: ok ok ok 子類中: ok ok …

c語言程序算一元二次方程,如何用C語言來計算一元二次方程

C語言實現一元二次方程的解 源程序#include#includefloat x1,x2,p,q,d;float great_than_zero(float,float);float equql_to_zero(float,float);float smaller_than_zero(float,float);main(){float a,b,c;printf(“Enter a,b,c:”);scanf(“%f%f%f”,&a,&b,&c);db…

cosin等于多少_cos45度等于多少

cos45度√2/2。角A的鄰邊比斜邊叫做角A的余弦,記作cosA(由余弦英文cosine簡寫得來),即cosA等于角A的鄰邊/斜邊(直角三角形)。二倍角公式sin2α2sinαcosαtan2α2tanα/(1-tan^2(α))cos2αcos^2(α)-sin^2(α)2cos^2(α)-11-2sin^2(α)積化和差公式sinα…

c語言宏定義比較三個數大小,C語言中兩個宏進行大小對比,其中一個沒有定義,這種行為如何定義。...

1.C語言中兩個宏進行大小對比&#xff0c;其中一個沒有定義&#xff0c;這種行為如何定義呢&#xff1f;在學習U-boot的過程中遇到這么一個定義&#xff1a;# if (CONFIG_ENV_ADDR > CONFIG_SYS_MONITOR_BASE) && \(CONFIG_ENV_ADDR CONFIG_ENV_SIZE) < \(CONFI…

java中變量運算細節 (2)

/* 目的&#xff1a;測試變量的運算方式 結果&#xff1a;byte a, b, c;a bc;或者 a b10形如這種形式的算式&#xff0c; 等式的右邊的運算結果默認的都是int型的&#xff01;因為等式右邊有變量&#xff0c; 編譯器無法確定變量的內容&#xff0c;因為它是變量&#xff01;所…

c語言設計二級考試程序修改題,全國計算機二級考試C語言復習題與答案解析

全國計算機二級考試C語言復習題與答案解析三、程序修改題下列給定程序中函數fun的功能是&#xff1a;將長整型數中各位上為奇數的數依次取出&#xff0c;構成一個新數放在t中。高位仍在高位&#xff0c;低位仍在低位。例如&#xff0c;當s中的數為87653142時&#xff0c;t中的數…

ccs變量觀察窗口在哪_CCS3.3查看變量圖形

CCS3.3查看變量圖形首先聲明&#xff0c;覺得ccs3.3中Graph并不是什么量都可以觀察的&#xff0c;原因是跟斷點有關&#xff0c;反正對于我的仿真器XDS510的是如此。即程序運行到斷點處會有延時&#xff0c;對于普通信號可能沒什么影響&#xff0c;但對于高頻信號來說&#xff…

poj 2777(線段樹的節點更新策略)

1 /*2 之前的思想是用回溯的方式進行顏色的更新的&#xff01;如果用回溯的方法的話&#xff0c;就是將每一個節點的顏色都要更新3 通過子節點的顏色情況來判斷父節點的顏色情況 &#xff01;這就是TLE的原因&#xff01;4 5 后來想一想沒有必要 &#xff01;加入[a, b] 區間有…

c語言計算機編程例題詳解,計算機C語言編寫程序題及答案解析精選.doc

計算機C語言編寫程序題及答案解析精選2011年計算機二級C語言編寫程序題及答案解析精選【4.1】已知銀行整存整取存款不同期限的月息利率分別為&#xff1a;0.315% 期限一年0.330% 期限二年月息利率 &#xff1d; 0.345% 期限三年0.375% 期限五年0.420% 期限八年要求輸入存錢的本…

mfsort shell語法_Shell中字符串排序的幾種方法

Shell中字符串排序的幾種方法【方法一】按ASCII正向排序備注:1) tr將子字符串中的空白轉換為換行符&#xff0c;再用sort排序2) sort無參的話&#xff0c;默認按ASCII正向排序【方法二】按ASCII正向排序備注:1) -r參數: 按ASCII碼反向排序2) 在使用sort,uniq等組合命令時候【方…

java中并不是任意多個接口都可以實現多實現

interface A{public abstract void show(); }interface B{public abstract int show(); }public class Test implements A, B{public void show(){System.out.println("A show!");}/*只寫 void show&#xff08;&#xff09;出現的問題&#xff1a;Test不是抽象的, 并…

變形監測期末復習_寒假即將來臨,中小學期末考試時間是什么時候?

2019年下學期也快結束&#xff0c;各個區的中小學考試時間安排已經公布了。今年&#xff0c;初二將首次進行全市統考&#xff0c;統考的意義重大&#xff0c;希望家長們可以督促孩子們重視起來&#xff0c;考出好成績!下面&#xff0c;讓我們來看一下2019下學期深圳各區中小學期…

c語言2048項目報告,c語言----項目_小游戲2048

2048 小游戲 主要是針對邏輯思維的一個訓練.主要學習方面:1.隨機數產生的概率.2.行與列在進行移動的時候幾種情況.3.messagebox的使用#include #include #include #include using namespace std;int board[4][4] {0}; //二維數組int if_need_rand; //是否生成隨機數int if_gam…

java中的顯示初始化和特定初始化

public class Test{public static void main(String[] args){Child child new Child();} }class Parent{public Parent(){super();show();//this.show(); 因為是Child類對象調用了super()來構造其父類的部分;所以父類中的this&#xff08;隨著其構造方法入棧的&#xff09;是指…

etl工程師 面試題_數據倉庫工程師面試題筆試.doc

數據倉庫工程師面試題姓名&#xff1a;____張小核______ 開始時間&#xff1a;_____:______ 結束時間&#xff1a;_____:_____數據庫使用過哪些數據庫&#xff1f;試說出它們的異同。答&#xff1a;使用過SQL SERVER和ORACLE它們的區別是&#xff1a;1.sql server 是中小型企業…

為什叫c語言,為什么c語言叫c語言?

1972年&#xff0c;美國貝爾實驗室的 D.M.Ritchie 在B語言的基礎上最終設計出了一種新的語言&#xff0c;他取了BCPL的第二個字母作為這種語言的名字&#xff0c;這就是C語言。1973年初&#xff0c;C語言的主體完成。Thompson和Ritchie用它完全重寫了UNIX。隨著UNIX的發展&…

java中對象的初始化過程

class Parent{int num 8;// ->3Parent(){//super(); // ->2//顯示初始化 // ->3//構造代碼段 // ->4show(); // ->5}{// ->4System.out.println("Parent constructor code run->");}public void show(){//被覆蓋System.out.println(&quo…

馬斯克翻跟頭機器人_馬斯克又搞事情 用VR訓練機器人模仿人類動作

據該公司的開發者介紹&#xff1a;“我們已經研發了一款新算法——單次模仿學法算法。” 人們先在VR中完成一次操作&#xff0c;隨后機器人通過觀看視頻來模仿人類的行為。為了證明該算法&#xff0c;設計者進行了堆疊彩色方塊實驗。人類在VR環境中按順序移動方塊。機器人首先通…

c語言通過指針變量輸出10個元素,C語言程序設計第2版指針程序設計(10頁)-原創力文檔...

C 語言程序設計 - 理論方法與實踐(第 2 版) 7.4.1 簡單指針變量作函數參數 例 7-9 用比較交換法 &#xff0c;將一維數組的最 大值移到數組的最 末元素位置&#xff0c;交換 過程用上述 swap() 函數實現。 #include int main() { void swap(int *,int *); int i,a[10]{33,-12,9…

java中對象多態時成員變量,普通成員函數及靜態成員函數的調用情況

/* 樣例1&#xff1a;class Parent{int num 3;}class Child extends Parent{int num 4;} *//* 樣例2&#xff1a; class Parent{}class Child extends Parent{int num 4; } *//* 樣例3&#xff1a; class Parent{void show(){System.out.println("Parent Show!");…