MySQL数据表的子查询

数据库 waitig 391℃ 百度已收录 0评论

子查询语句
在一个select语句中嵌入了另一个select语句,那么被嵌入的select语句叫做子查询语句
主查询语句
第一个select语句
主查询和子查询的关系





子查询的分类

1、标量子查询(子查询语句返回的是一个值)
查询students表中大于平均年龄的学生信息

  1. 查询班级学生平均年龄
  2. 查询大于平均年龄的学生

子查询:select语句中嵌套select语句
select * from students where height 主查询
select avg(height) from students 子查询身高平均值
将两句合并,并给子查询加小括号,提高优先级
select * from students where age > (select avg(age)from students);

2、列级子查询(子查询语句返回的结果为单列)
查询有学生的班级有哪些

  1. 找出学生表中所有的班级 id
  2. 找出班级表中对应的名字

select class_name from classes where id in (select cls_id from students);

3、行级子查询
查找班级年龄最大,身高最高的学生(两个条件同时出现在一个学生生身上)

  • 行元素: 将多个字段合成一个行元素,在行级子查询中会使用到行元素

select * from students where (height,age)=(select max(height),max(age) from students);

4、表级子查询(返回多行多列的结果集)
查询学生和学生所在的班级
select students.name,classes.class_name from students inner join classes on students.cls_id = classes.id;
↓ ↓ ↓ ↓ ↓ ↓ ↓
select students.name,classes.class_name from (多行多列的结果集)

子查询特定关键字:in、some、any、all
select class_name from classes where id in (select cls_id from students);
—any | some 比较运算符 类似in
select class_name from classes where id = any(select cls_id from students);

select class_name from classes where id = some(select cls_id from students);


—all 一般搭配 != <> 使用
作用类似于not in
select class_name from classes where id <> all(select cls_id from students);

总结
子查询的完整语句


执行顺序



本文由【waitig】发表在等英博客
本文固定链接:MySQL数据表的子查询
欢迎关注本站官方公众号,每日都有干货分享!
等英博客官方公众号
点赞 (0)分享 (0)