一、子查询概念的引入
在整个SQL查询语句中,子查询并不是特殊的语法,也就是说在整个SQL查询操作中,SELECT、FROM、WHERE、GROUP BY、HAVING、ORDER BY 中都可以使用子查询。
所有可能出现的子查询都需要使用()声明,所谓的子查询,实质上属于查询的嵌套,而且从理论上来说,查询子句的任何位置上都可以随时出现子查询。但是出现子查询较多的位置是WHERE和FROM。
-
WHERE子句:子查询返回单行单列、单行多列、多行单列。
-
HAVING子句:子查询返回单行单列,而且要使用统计函数过滤。
-
FROM子句:子查询返回的是多行多列。
-
SELECT子句:一般返回单行单列,需要在某些查询的时候使用。
二、在WHERE子句中使用子查询
1、单行子查询: 只返回一条记录 / 单行操作符(=、!=、<、<=、>、>=)
示例:返回学生表中体育成绩最差的同学
原始数据:
查询语句:
select *
from student_table t
where t.sports = (select min(a.sports) from student_table a)
结果: