1. 程式人生 > >SQL子查詢、相關子查詢

SQL子查詢、相關子查詢

子查詢

子查詢是巢狀在其他查詢中的查詢。子查詢總是從內向外處理。

注意:

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.類編號
  )