一個select中還包含另一個select,其中最裡面的select語句稱之為子查詢
根據select出現的位置可以將子查詢分為以下幾類:
from子查詢
where子查詢
exists子查詢
從select返回的結果,那麼子查詢又可以分為:
查詢的結果只有一個值。
示例:
需求:查詢zhangsan所在的教室
思路:
首先,先寫最終想得到查詢==》教室
select room from class ......
再行,條件==》查詢zhangsan
where id =(select c_id from stu where s_name='zhangsan')
查詢得到的結果,是一個一列多行的數據。
需求:
查詢班級為php的所有的學生
select * from stu where c_id =(select id from class where c_name='php');
查詢班級為php和ios的所有的學生
select * from stu where c_id in (select id from class where c_name = 'php' or c_name='ios');
示例:
查詢的結果是一行多列。
需求:查詢學生表中,sex為1,age為最大的記錄
select * from stu where (age,sex)=(select max(age),sex from stu where sex=1);
示例:
結果是一個表,相當於一個數據源,數據源放到from後
需求:
查詢每一個班級中年齡最大的學生。
示例:
exists相當於判斷
需求:
查詢php班級中有的學生