SQL子查詢、相關子查詢
阿新 • • 發佈:2018-12-16
子查詢
子查詢是巢狀在其他查詢中的查詢。子查詢總是從內向外處理。
注意:
1、在使用子查詢時儘量把子查詢分解為多行並且適當進行縮排,能極大的簡化子查詢的使用。
2、不能巢狀太多的子查詢,這樣會降低效能。
3、在WHERE子句中使用子查詢,應該保證SELECT語句具有與WHERE子句中相同數目的列。
4、通常子查詢將返回單個列並且與單個列進行匹配,但如果需要也可以使用多個列。
語法舉例:
city表中 CountryCode 列中開頭包含 A 或 B 的 序號,並將符合要求的資訊全部輸出
SELECT * FROM city WHERE ID IN( SELECT ID FROM city WHERE CountryCode REGEXP '[A|B]' ORDER BY ID );
相關子查詢
相關子查詢是涉及外部查詢的子查詢。
執行過程: (1)從外層查詢中取出一個元組,將元組相關列的值傳給內層查詢。 (2)執行內層查詢,得到子查詢操作的值。 (3)外查詢根據子查詢返回的結果或結果集得到滿足條件的行。 (4)然後外層查詢取出下一個元組重複做步驟1-3,直到外層的元組全部處理完畢。
語法舉例
查詢Booka表中大於該類圖書價格平均值的圖書資訊SElECT 圖書名,出版社,類編號,價格
SELECT FROM Books As a WHERE 價格 > ( SELECT AVG(價格) FROM Books AS b WHERE a.類編號=b.類編號 )