where 型子查询
把内层查询结果作为外层的查询条件
如:查询成绩最高的学生信息
select * from cj where fs=(select max(fs) from cj );
from 型子查询
把内层查询结果当成临时表,供外层查询SQL再次查询
如:查询每个学生的最高成绩
注意:当成临时表的时候,要用as 取1个别名
如果用 where 子查询 :select * from cj where fs in (select max(fs) from cj group by name);
from 子查询 :select * from (select * from cj order by name asc,fs desc) as temp group by name ;
注意:使用from子查询中排序,在Mysql 5.7 中已不支持,在Mysql5.7中子查询的排序条件会被忽略掉
exists 型子查询
把外层查询结果,拿到内层,看内层是否成立
如:查询有商品的栏目