场景:查找身高最高的学生

按照身高降序排序,取得第一个

select * from select_student order by height desc limit 0,1;

问题是出现等高的学生,问题不能处理!

应该,找到最高的身高,然后找到所有符合最高身高的学生

select max(height) from select_student;

select * from select_student where height=180.05;

上面两条语句可以整合为一条语句:

select * from select_student where height=select max(height) from select_student;

此时,select max() 出现在另外的语句内部,称之为子查询语句!

注意:子查询,应该始终出现括号内!

select * from select_student where height=(select max(height) from select_student);

子查询的分类:

分类的依据:

1,依据子查询出现的位置

where型子查询,出现在where子句内

from型子查询,出现在from子句内

2,依据子查询的返回数据的格式

标量子查询,返回值是一个数据,称之为标量子查询

列子查询,返回一个列

行子查询,返回一个行

表子查询,返回的是一个二维表

from型:

场景:查询下表每个班级之内,身高最高的学生

应该先将每个班最高的放置在班内的第一个位置,再按照班级进行分组

不能使用order by 再使用group by

而需要,先用一个查询,得到身高排序结果,再将该结果分组

留意:from需要一个数据还是一个表,需要将子查询返回的数据,导出成表即可!为子查询起个别名即可!

select * from (select * from select_student order by height desc) as tmp group by class_id;

列子查询

返回值应该是一列

由于返回的是一列,是一类数据,看成是一个数据的集合。

查询所有班内女同学的男学生信息:

条件:先确定哪些班级内有女生:

select class_id from select_student where gender='female' group by class_id;

再在该班级之内,找到所有的男生:

select * from select_student where gender='male' and class_id in

(select class_id from select_student where gender='female' group by class_id);

典型的列子查询使用 in or not in 作为子查询的条件!

列子查询,还可以使用 =some , !=all 或者其他的运算符配合 some() 和 all() 语法完成!

some() 表示集合中的一部分! =some()相当于in , !=some()不相当于 not in !

all() 表示集合中的全部!(!=all() 相当于not in)

行子查询

场景:找到最高,最富有的学生!

select * from select_student where height=(select max(height) from select_student)

and money=(select max(money) from select_student);

上面的代码可以简化为:

select * from select_student where (height,money) = (select max(height),max(money)

form select_student;

使用行子查询可以,一次性查出来一个行(多个行)使用行进行匹配!上面使用了(),构建了一行!与子查询的行作比较!

exists型子查询

判断依据不是根据子查询所返回的数据!只是根据子查询是否存在的返回数据来看;

语法:exists(子查询);

如果子查询存在返回数据,则exists返回真,反之返回假!

出现在where条件内:

select * from select_student where exists(select 1);

场景:

检索出班级已经不存在的学生

select * from select_student where exists(select * from select_class where

select_student.class_id=select_class.id);

mysql中子查询的概念_Mysql子查询的概念、分类、语法相关推荐

  1. mysql中子查询是什么_mysql子查询是什么

    MySql的子查询是多表查询的一个重要组成部分,常常和连接查询一起使用,是多表查询的基础.下面本篇文章就来带大家了解一下子查询,希望对你们有所帮助. 什么是子查询? 子查询,又叫内部查询.当一个查询是 ...

  2. mysql用in报错_Mysql子查询IN中使用LIMIT

    学习下Mysql子查询IN中使用LIMIT的方法. 这两天项目里出了一个问题,mysql LIMIT使用后报错. 需求是这样的,我有3张表,infor信息表,mconfig物料配置表,maaply物料 ...

  3. mysql子查询过多慢_MySQL子查询慢现象的解决

    当你在用explain工具查看sql语句的执行计划时,若select_type 字段中出现"DEPENDENT SUBQUERY"时,你要注意了,你已经掉入了mysql子查询慢的& ...

  4. mysql查找并删除记录_mysql 子查询删除记录

    mysql 子查询删除记录 mysql 可以通过子查询得到要删除的记录条件,然后通过子查询得结果匹配要删除的记录.但是 mysql 不能直接删除子查询表中的数据,必须通过一个临时表来解决.例如: de ...

  5. mysql子查询复杂操作_MySQL 子查询操作

    子查询 在一个 select 语句中,嵌入了另外一个 select 语句, 那么被嵌入的 select 语句称之为子查询语句 为什么会有子查询这种用法 数据库有没有记忆力 但查询结果需要的数据,本表已 ...

  6. mysql子查询是什么_mysql子查询

    1. 什么是子查询 ​ 当一个查询是另一个查询的条件时,这个查询称之为子查询(内层查询) ​ 什么时候用? ​ 当查询需求比较复杂,一次性查询无法得到结果,需要多次查询时, ​ 例如:给出一个部门名称 ...

  7. mysql子查询分为几种方法_MYSQL子查询的5种形式

    mysql从4.1版开始支持子查询功能,在此版本前,可以用join写连表查询来进行替代,但不推荐这么写,相当麻烦,mysql子查询的几种常 见写法: 1.select * from xxx where ...

  8. mysql 分号子查询_MySQL子查询详解

    子查询指一个查询语句嵌套在另一个查询语句内部的查询,这个特性从 MySQL 4.1 开始引入,在 SELECT 子句中先计算子查询,子查询结果作为外层另一个查询的过滤条件,查询可以基于一个表或者多个表 ...

  9. mysql子查询的语法_MySQL子查询Subquery语法介绍

    MySQL子查询Subquery语法介绍 发布时间:2020-05-19 15:48:10 来源:51CTO 阅读:187 作者:三月 下面讲讲关于MySQL子查询Subquery,文字的奥妙在于贴近 ...

  10. mysql的where子查询_mysql子查询

    原标题:mysql子查询 一.mysql子查询基本知识 子查询就是在原有的查询语句中,嵌入新的查询,来得到我们想要的结果集. 子查询一般分为:where型子查询.from型子查询和exists型子查询 ...

最新文章

  1. eBay宣布发布全新的购买和销售APIs
  2. python生成器和装饰器_python三大法器:生成器、装饰器、迭代器
  3. 计算机主板用塑料做的好吗,太震惊!你的键盘是否用了黑心塑料?
  4. 百度地图的立体效果来实现
  5. ❤️详解腾讯面试❤️
  6. Android之Bmob移动后端云服务器
  7. 深耕边缘计算 揭秘阿里云边缘云网一体化的技术实践
  8. 学习笔记之-Kubernetes(K8S)介绍,集群环境搭建,Pod详解,Pod控制器详解,Service详解,数据存储,安全认证,DashBoard
  9. Ubunt更换阿里云镜像源
  10. python封装功能讲解_python学习28——面向对象实例讲解与封装
  11. 商城项目数据库设计中订单表
  12. PHP 中移除微信emoji表情
  13. 版式设计——网页排版
  14. 如何用photoshop做24色环_怎么使用PS制作24色环?
  15. Android 救援模式(Rescue Mode)原理剖析
  16. VLAN划分-思科模拟器-基础回顾
  17. 服务器证书如果不被网站信任怎么办?
  18. 牛客网刷题:Q3禁忌雷炎(一般)
  19. 一仓库失窃,四管理员被传讯_如何找到丢失或失窃的Android手机
  20. canvas生成圆形图章(名称紧凑和散开)

热门文章

  1. HDU 4050 wolf5x 概率dp 难度:1
  2. ZOJ 1111 Poker Hands
  3. 一些简单的道理和习惯
  4. codesmith执行时提示“调用的目标发生了异常”的处理过程经验。
  5. python 协程进阶
  6. 190811每日一句
  7. Steve Pavlina:如何ASAP找到人生目标?
  8. Atitit 提升效率 降低技术难度与提升技术矛盾的解决方案 1. 问题 2 1.1. 高手喜欢技术挑战怎么办,但会提升技术难度 导致新手不会用怎么办 2 2. 解决方案 2 2.1. 通过开会统
  9. Atitit 完整知识体系表 attilax总结 要读哪些书
  10. atitit.交换机 汇聚上联、网络克隆和标准共享的原理与区别