子查詢(SubQuery)算是比較進階的應用,在資料表關聯變得複雜或是要查詢特殊條件時就會用上子查詢。
比如要查詢全班平均及格以上的同學時,就會先用一個子查詢來算出全班的平均分數,再用這個平均分數放到Where句子中去做為條件。
在Select 區段的子查詢
用在SELECT中大多是一個值的結果,比如要同時列出學生的成績及全班的平均分數
1 | SELECT `id`,`score`,avg(`score`) as '總平均' FROM `students` |
在from 區段的子查詢
在FROM區段中的字查詢,其結果會被視為是一張資料表,因此等同於是做了一次結合查詢,通常會幫這個子查詢的結果命名一個暫時的資料表名
1 |
|
在where(join) 區段的字查詢
WHERE 區段的子查詢視需要可以很複雜,搭配各種限制語法及排序等可以得到各種查詢結果
1 | SELECT 欄位.... |