相關查詢的子查詢和嵌套子查詢


 

SQL-Server中分為相關子查詢和嵌套子查詢兩類。

就拿一個實例來說吧!

類編號  圖書名         出版社               價格
--------------------------------------------------------
2      c#高級應用    聖通出版            23.00
2      Jsp開發應用   機械出版社          45.00
3      高等數學       濟南出版社          25.00
3      瘋狂英語       清華大學出版社     32.00

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

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

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

  嵌套子查詢一般可以分為:返回 單值的子查詢 和 返回一個列表的子查詢 ,下面舉例說明:

1.返回單值:

  --查詢所有價格高於平均價格的圖書名,作者,出版社和價格。 

 

 
USE tempdb
GO

SElECT 圖書名,作者,出版社,價格
FROM Books
WHERE 價格 >
(
SELECT AVG(價格)
FROM Books
)
GO 

2.返回值列表

--查詢所有借閱圖書的讀者信息

 
SElECT *
FROM Readers
WHERE 讀者編號 IN
(
SELECT 讀者編號
FROM [Borrow History]
)
GO

 

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

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

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

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

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

  下面舉例說明:

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

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

可能現在的自己並不行,但是你總擋不住學習的腳步!

其實每學一種,我都感覺自己在成長!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM