MySQL中的子查询

子查询,在一个查询语句中又出现了查询语句
子查询可以出现在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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值