子查询,在一个查询语句中又出现了查询语句
子查询可以出现在from和where后面
from 表子查询(结果一般为多行多列)把查询结果继续当一张表对待
where 标量子查询(结果集只有一行一列)查询身高最高的学生,查询到一个最高身高
列子查询(结果集只有一行多列)
对上表进行如下操作
查询身高最高的学生
-- 查询身高最高的学生
SELECT
NAME,
height
FROM
student
WHERE height =
(SELECT
MAX (height)
FROM
student)
SELECT
NAME,
height
FROM
student
WHERE height IN
(SELECT
height
FROM
student
WHERE height = 1.80
OR height = 1.57)
查询姓名重复的学生
-- 查询姓名重复的学生
SELECT
*
FROM
(SELECT
NAME,
COUNT (*) c
FROM
student
GROUP BY NAME) t
WHERE t.c > 1
查询身高大于平均身高的学生
-- 查询身高大于平均身高的学生
SELECT
NAME,
height
FROM
student
WHERE height >
(SELECT
AVG (height)
FROM
student)
查询与李四同专业的学生
-- 查询与李四同专业的学生
SELECT
*
FROM
student
WHERE majorid =
(SELECT
majorid
FROM
student
WHERE NAME = '李四')
查询每个专业中升高最高的学生
-- 查询每个专业中身高最高的学生的信息
SELECT
*
FROM
student s
INNER JOIN
(SELECT
MAX (height) mt,
majorid,
COUNT (*)
FROM
student
GROUP BY majorid) t
ON s.height = t.mt
AND s.majorid = t.majorid