子查詢:
子查詢:嵌套在其它查詢中的查詢語句。(又稱為內部查詢)
主查詢:包含其它子查詢的查詢稱為主查詢。(又稱外部查詢)
非相關子查詢:
在主查詢中,子查詢只需要執行一次,子查詢結果不再變化,供主查詢使用,這種查詢方式稱為非相關子查詢。?
也可以這么理解:?
非相關子查詢是獨立于外部查詢的子查詢,子查詢總共執行一次,執行完畢后將值傳遞給外部查詢。
現在我們來對這個表做一個查詢:?
查詢具有年齡相同的人在2人及以上的,他們的年齡分別是多少。
select age from stud group by age having count(age)>=2;
?
count(age)在這里只是作為供主查詢使用的條件。
相關子查詢:
相關子查詢的執行依賴于外部查詢的數據,外部查詢執行一行,子查詢就執行一次。?
也可以這么理解:?
執行查詢的時候先取得外部查詢的一個屬性值,然后執行與此屬性值相關的子查詢,執行完畢后再取得外部父查詢的下一個值,依次再來重復執行子查詢;
我們先把表格增加一列sex并設置好值。
接下來:?
查詢不但具有年齡相同的人在2人及以上的,而且性別是1的那些人的年齡。
SELECT age,sex FROM stud GROUP BY age,sex HAVING COUNT(age)>=2 AND sex='1';
?
?