子查詢
在一個 select 語句中,嵌入了另外一個 select 語句, 那么被嵌入的 select 語句稱之為子查詢語句
主查詢
主要查詢的對象,第一條 select 語句
主查詢和子查詢的關系
- 子查詢是嵌入到主查詢中
- 子查詢是輔助主查詢的,要么充當條件,要么充當數據源
- 子查詢是可以獨立存在的語句,是一條完整的 select 語句
子查詢分類
- 標量子查詢: 子查詢返回的結果是一個數據(一行一列)
- 列子查詢: 返回的結果是一列(一列多行)
- 行子查詢: 返回的結果是一行(一行多列)
標量子查詢
- 查詢班級學生平均年齡
- 查詢大於平均年齡的學生
查詢班級學生的平均身高
select * from students where age > (select avg(age) from students);
列級子查詢
- 查詢還有學生在班的所有班級名字
-
- 找出學生表中所有的班級 id
- 找出班級表中對應的名字
select name from classes where id in (select cls_id from students);
行級子查詢
- 需求: 查找班級年齡最大,身高最高的學生
- 行元素: 將多個字段合成一個行元素,在行級子查詢中會使用到行元素
select * from students where (height,age) = (select max(height),max(age) from students);
子查詢中特定關鍵字使用
- in 范圍
- 格式: 主查詢 where 條件 in (列子查詢)