MySQL数据库基础(十二):子查询(三步走)

举报
Lansonli 发表于 2024/09/26 22:59:36 2024/09/26
【摘要】 子查询(三步走)一、子查询(嵌套查询)的介绍在一个 select 语句中,嵌入了另外一个 select 语句, 那么被嵌入的 select 语句称之为子查询语句,外部那个select语句则称为主查询。主查询和子查询的关系:子查询是嵌入到主查询中子查询是辅助主查询的,要么充当条件,要么充当数据源(数据表)子查询是可以独立存在的语句,是一条完整的 select 语句二、子查询的使用例1、查询学生...

子查询(三步走)

一、子查询(嵌套查询)的介绍

在一个 select 语句中,嵌入了另外一个 select 语句, 那么被嵌入的 select 语句称之为子查询语句,外部那个select语句则称为主查询。

主查询和子查询的关系:

  • 子查询是嵌入到主查询中
  • 子查询是辅助主查询的,要么充当条件,要么充当数据源(数据表)
  • 子查询是可以独立存在的语句,是一条完整的 select 语句

二、子查询的使用

例1、查询学生表中大于平均年龄的所有学生

需求:查询年龄 > 平均年龄的所有学生

前提:

① 获取班级的平均年龄值

② 查询表中的所有记录,判断哪个同学 > 平均年龄值

第一步:写子查询

select avg(age) from students;

第二步:写主查询

select * from students where age > (平均值);

第三步:第一步和第二步进行合并

select * from students where age > (select avg(age) from students);

例2、查询学生在班的所有班级名字

需求:显示所有有学生的班级名称

前提:

① 先获取所有学员都属于那些班级

② 查询班级表中的所有记录,判断是否出现在①结果中,如果在,则显示,不在,则忽略。

第一步:编写子查询

select distinct cls_id from students is not null;

第二步:编写主查询

select * from classes where cls_id in (1, 2, 3);

第三步:把主查询和子查询合并

select * from classes where cls_id in (select distinct cls_id from students where cls_id is not null);

例3、查找年龄最小,成绩最低的学生

第一步:获取年龄最小值和成绩最小值

select min(age), min(score) from student;

第二步:查询所有学员信息(主查询)

select * from students where (age, score) = (最小年龄, 最少成绩);

第三步:把第一步和第二步合并

select * from students where (age, score) = (select min(age), min(score) from students);

三、总结

子查询是一个完整的SQL语句,子查询被嵌入到一对小括号里面

掌握子查询编写三步走

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。