mysql中子查询的概念_Mysql子查询的概念、分类、语法
场景:查找身高最高的学生
按照身高降序排序,取得第一个
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子查询的概念、分类、语法相关推荐
- mysql中子查询是什么_mysql子查询是什么
MySql的子查询是多表查询的一个重要组成部分,常常和连接查询一起使用,是多表查询的基础.下面本篇文章就来带大家了解一下子查询,希望对你们有所帮助. 什么是子查询? 子查询,又叫内部查询.当一个查询是 ...
- mysql用in报错_Mysql子查询IN中使用LIMIT
学习下Mysql子查询IN中使用LIMIT的方法. 这两天项目里出了一个问题,mysql LIMIT使用后报错. 需求是这样的,我有3张表,infor信息表,mconfig物料配置表,maaply物料 ...
- mysql子查询过多慢_MySQL子查询慢现象的解决
当你在用explain工具查看sql语句的执行计划时,若select_type 字段中出现"DEPENDENT SUBQUERY"时,你要注意了,你已经掉入了mysql子查询慢的& ...
- mysql查找并删除记录_mysql 子查询删除记录
mysql 子查询删除记录 mysql 可以通过子查询得到要删除的记录条件,然后通过子查询得结果匹配要删除的记录.但是 mysql 不能直接删除子查询表中的数据,必须通过一个临时表来解决.例如: de ...
- mysql子查询复杂操作_MySQL 子查询操作
子查询 在一个 select 语句中,嵌入了另外一个 select 语句, 那么被嵌入的 select 语句称之为子查询语句 为什么会有子查询这种用法 数据库有没有记忆力 但查询结果需要的数据,本表已 ...
- mysql子查询是什么_mysql子查询
1. 什么是子查询 当一个查询是另一个查询的条件时,这个查询称之为子查询(内层查询) 什么时候用? 当查询需求比较复杂,一次性查询无法得到结果,需要多次查询时, 例如:给出一个部门名称 ...
- mysql子查询分为几种方法_MYSQL子查询的5种形式
mysql从4.1版开始支持子查询功能,在此版本前,可以用join写连表查询来进行替代,但不推荐这么写,相当麻烦,mysql子查询的几种常 见写法: 1.select * from xxx where ...
- mysql 分号子查询_MySQL子查询详解
子查询指一个查询语句嵌套在另一个查询语句内部的查询,这个特性从 MySQL 4.1 开始引入,在 SELECT 子句中先计算子查询,子查询结果作为外层另一个查询的过滤条件,查询可以基于一个表或者多个表 ...
- mysql子查询的语法_MySQL子查询Subquery语法介绍
MySQL子查询Subquery语法介绍 发布时间:2020-05-19 15:48:10 来源:51CTO 阅读:187 作者:三月 下面讲讲关于MySQL子查询Subquery,文字的奥妙在于贴近 ...
- mysql的where子查询_mysql子查询
原标题:mysql子查询 一.mysql子查询基本知识 子查询就是在原有的查询语句中,嵌入新的查询,来得到我们想要的结果集. 子查询一般分为:where型子查询.from型子查询和exists型子查询 ...
最新文章
- eBay宣布发布全新的购买和销售APIs
- python生成器和装饰器_python三大法器:生成器、装饰器、迭代器
- 计算机主板用塑料做的好吗,太震惊!你的键盘是否用了黑心塑料?
- 百度地图的立体效果来实现
- ❤️详解腾讯面试❤️
- Android之Bmob移动后端云服务器
- 深耕边缘计算 揭秘阿里云边缘云网一体化的技术实践
- 学习笔记之-Kubernetes(K8S)介绍,集群环境搭建,Pod详解,Pod控制器详解,Service详解,数据存储,安全认证,DashBoard
- Ubunt更换阿里云镜像源
- python封装功能讲解_python学习28——面向对象实例讲解与封装
- 商城项目数据库设计中订单表
- PHP 中移除微信emoji表情
- 版式设计——网页排版
- 如何用photoshop做24色环_怎么使用PS制作24色环?
- Android 救援模式(Rescue Mode)原理剖析
- VLAN划分-思科模拟器-基础回顾
- 服务器证书如果不被网站信任怎么办?
- 牛客网刷题:Q3禁忌雷炎(一般)
- 一仓库失窃,四管理员被传讯_如何找到丢失或失窃的Android手机
- canvas生成圆形图章(名称紧凑和散开)
热门文章
- HDU 4050 wolf5x 概率dp 难度:1
- ZOJ 1111 Poker Hands
- 一些简单的道理和习惯
- codesmith执行时提示“调用的目标发生了异常”的处理过程经验。
- python 协程进阶
- 190811每日一句
- Steve Pavlina:如何ASAP找到人生目标?
- Atitit 提升效率 降低技术难度与提升技术矛盾的解决方案 1. 问题	2 1.1. 高手喜欢技术挑战怎么办,但会提升技术难度 导致新手不会用怎么办	2 2. 解决方案	2 2.1. 通过开会统
- Atitit 完整知识体系表 attilax总结 要读哪些书
- atitit.交换机 汇聚上联、网络克隆和标准共享的原理与区别