SQL-Server中分為相關子查詢和嵌套子查詢兩類。
就拿一個實例來說吧!
類編號 圖書名 出版社 價格
--------------------------------------------------------
2 c#高級應用 聖通出版 23.00
2 Jsp開發應用 機械出版社 45.00
3 高等數學 濟南出版社 25.00
3 瘋狂英語 清華大學出版社 32.00
嵌套子查詢的執行不依賴與外部的查詢。執行過程:
(1)執行子查詢,其結果不被顯示,而是傳遞給外部查詢,作為外部查詢的條件使用。
(2)執行外部查詢,並顯示整個結果。
嵌套子查詢一般可以分為:返回 單值的子查詢 和 返回一個列表的子查詢 ,下面舉例說明:
1.返回單值:
--查詢所有價格高於平均價格的圖書名,作者,出版社和價格。
GO
SElECT 圖書名,作者,出版社,價格
FROM Books
WHERE 價格 >
(
SELECT AVG(價格)
FROM Books
)
GO
2.返回值列表
--查詢所有借閱圖書的讀者信息
FROM Readers
WHERE 讀者編號 IN
(
SELECT 讀者編號
FROM [Borrow History]
)
GO
相關子查詢的執行依賴於外部查詢。多數情況下是子查詢的WHERE子句中引用了外部查詢的表。執行過程:
(1)從外層查詢中取出一個元組,將元組相關列的值傳給內層查詢。
(2)執行內層查詢,得到子查詢操作的值。
(3)外查詢根據子查詢返回的結果或結果集得到滿足條件的行。
(4)然后外層查詢取出下一個元組重復做步驟1-3,直到外層的元組全部處理完畢。
下面舉例說明:
--查詢Booka表中大於該類圖書價格平均值的圖書信息
FROM Books As a
WHERE 價格 >
(
SELECT AVG(價格)
FROM Books AS b
WHERE a.類編號=b.類編號
)
GO
可能現在的自己並不行,但是你總擋不住學習的腳步!
其實每學一種,我都感覺自己在成長!
