子查詢比較簡單,我們還是通過案例引入。
有時候我們查詢的時候,需要用到的不止一個表的數據,比如下面的場景:
查詢名字叫李曉紅同學的班主任姓名
我們提供三個表的基礎信息如下:
從三張表的結構,我們不難看出,想要根據student_name找到teacher_name,是這樣一條鏈路:
很顯然,我們不能只查詢一個表就得到想要的結果,我們需要多寫一條查詢,將其結果作為另外一條查詢的條件,這就是一種嵌套的結構,而在mysql中,是允許這種sql構建方式的,所以我們最終的sql就是:
SELECTteacher_name
FROMteachers
WHEREteacher_id = (SELECThead_teacher_idFROMclassesWHEREclass_id = (SELECTclass_idFROMstudentsWHEREstudent_name = '李曉紅'));
其實子查詢就是完整的sql語句,查詢結果可以用于:
- 用查詢的特定值作為過濾條件
- 作為過濾范圍
- 作為計算字段
用法非常多,就看自己的想象力了