mysql 子查询的使用


Posted in MySQL onApril 28, 2022

出现在其他语句中的 select 语句,称为子查询或内查询;外部的查询语句,称为主查询或 外查询 . 

-- 子查询
-- 查询的条件来自于另一查询的结果
SELECT * FROM t_user WHERE number=(SELECT number FROM t_user WHERE NAME='张三')

当然子查询也有类型,分为以下几种 : 

  • 标量子查询(结果集只有一行一列)
  • 列子查询(结果集只有一列多行)
  • 行子查询(结果集有一行多列)(较少)
  • 表子查询(结果集一般为多行多列)

这里我们以新建t_user表为例

mysql 子查询的使用 

需要注意的是 : 这里的分类是根据内嵌子查询的结果来分的 例如上述的sql语句就是标量子查询

mysql 子查询的使用

子查询结果只有一行一列

接着我们根据子查询在sql语句中出现的位置来讨论 : 

select后面:仅仅支持标量子查询

-- select语句后面,将t1查询出的结果作为子查询的条件
SELECT t1.number,
  (SELECT NAME FROM t_user t2 WHERE t1.name = t2.name)
FROM t_user t1

查询结果 : 

mysql 子查询的使用

insert into , update和 delete后面 : 

insert into用来为表中插入数据 , 所以后面是可以跟列子查询和表子查询的

-- insert into 后跟子查询
INSERT INTO t_user(number,NAME,age,birthday,weight,sex,opertime)
       SELECT number,NAME,age,birthday,weight,sex,NOW() FROM t_user WHERE id=3

这里需要注意的是 update与delete

UPDATE t_user SET NAME='abc' WHERE number=(SELECT number FROM t_user WHERE weight=110)

DELETE FROM t_user WHERE id=(SELECT id FROM t_user WHERE id=7)

上述这两条sql , mysql是不允许我们这样去执行的 : 

mysql 子查询的使用

mysql的底层机制使得我们在操作此表的时候是不能去改变此表结构的 

也就是说,子查询不能查询当前正在操作的表

where 后面 : 可跟标量子查询, 列子查询, 行子查询

-- where后跟标量子查询
-- 查询体重最大的人信息
SELECT * FROM t_user WHERE weight=(SELECT MAX(weight) FROM t_user)
-- where后跟列子查询
-- 查询体重大于或等于130的人信息
SELECT * FROM t_user WHERE weight IN (SELECT weight FROM t_user WHERE weight>=130)
-- where后跟行子查询
-- 查询年龄最大,体重最大的人的信息
SELECT * FROM t_user 
     WHERE (age,weight) = (SELECT MAX(age),MAX(weight) FROM t_user)

from 后面 : 可跟表子查询

表字查询的结果是多行多列, 也就是一个表

-- 表子查询
SELECT t.age FROM (SELECT age,weight FROM t_user)t

结果 :

mysql 子查询的使用

到此这篇关于mysql详细分析讲解子查询的使用的文章就介绍到这了!


Tags in this post...

MySQL 相关文章推荐
mysql多表查询-笔记七
Apr 05 MySQL
Mysql - 常用函数 每天积极向上
Apr 05 MySQL
MySQL 使用事件(Events)完成计划任务
May 24 MySQL
MySQL中in和exists区别详解
Jun 03 MySQL
mysql定时自动备份数据库的方法步骤
Jul 07 MySQL
MySQL的全局锁和表级锁的具体使用
Aug 23 MySQL
mysql配置SSL证书登录的实现
Sep 04 MySQL
MySQL定时备份数据库(全库备份)的实现
Sep 25 MySQL
Arthas排查Kubernetes中应用频繁挂掉重启异常
Feb 28 MySQL
排查MySQL生产环境索引没有效果
Apr 11 MySQL
MySql中的json_extract函数处理json字段详情
Jun 05 MySQL
MySQL数据库查询之多表查询总结
Aug 05 MySQL
Mysql 数据库中的 redo log 和 binlog 写入策略
Apr 26 #MySQL
优化Mysql查询的示例
Apr 26 #MySQL
MySQL的存储过程和相关函数
Apr 26 #MySQL
mysql 索引的数据结构为什么要采用B+树
MySQ InnoDB和MyISAM存储引擎介绍
pt-archiver 主键自增
Apr 26 #MySQL
提高系统的吞吐量解决数据库重复写入问题
Apr 23 #MySQL
You might like
用PHP程序实现支持页面后退的两种方法
2008/06/30 PHP
解析php常用image图像函数集
2013/06/24 PHP
PHP 文件编程综合案例-文件上传的实现
2013/07/03 PHP
php的4种常见运行方式
2015/03/20 PHP
js代码实现微博导航栏
2015/07/30 PHP
PHP调用接口API封装的例子
2019/10/11 PHP
jquery一般方法介绍 入门参考
2011/06/21 Javascript
JSON语法五大要素图文介绍
2012/12/04 Javascript
js控制网页前进和后退的方法
2015/06/08 Javascript
Jquery常用的方法汇总
2015/09/01 Javascript
详解 javascript中offsetleft属性的用法
2015/11/11 Javascript
AngularJS 让人爱不释手的八种功能
2016/03/23 Javascript
vue使用 better-scroll的参数和方法详解
2018/01/25 Javascript
JS实现的小火箭发射动画效果示例
2018/12/08 Javascript
js事件机制----捕获与冒泡机制实例分析
2020/05/22 Javascript
javascript实现支付宝滑块验证码效果
2020/07/24 Javascript
vue实现把接口单独存放在一个文件方式
2020/08/13 Javascript
[05:15]2018年度CS GO社区贡献奖-完美盛典
2018/12/16 DOTA
Python实现获取操作系统版本信息方法
2015/04/08 Python
python实现决策树C4.5算法详解(在ID3基础上改进)
2017/05/31 Python
pandas分别写入excel的不同sheet方法
2018/12/11 Python
原生python实现knn分类算法
2019/10/24 Python
Pycharm 使用 Pipenv 新建的虚拟环境(图文详解)
2020/04/16 Python
纯css3实现照片墙效果
2014/12/26 HTML / CSS
CSS3之2D与3D变换的实现方法
2019/01/28 HTML / CSS
老海军美国官网:Old Navy
2016/09/05 全球购物
领先的钻石和订婚戒指零售商:Diamonds-USA
2016/12/11 全球购物
StubHub德国:购买和出售门票
2017/09/06 全球购物
Sasa莎莎海外旗舰店:香港莎莎美妆平台
2018/03/21 全球购物
艺术用品:Arteza
2018/11/25 全球购物
农民工工资承诺书范文
2014/03/31 职场文书
人力资源本科毕业生求职信
2014/06/04 职场文书
倡议书的格式写法
2015/04/28 职场文书
致青春观后感
2015/06/09 职场文书
药品销售员2015年终工作总结
2015/10/22 职场文书
职场干货:简历中的自我评价应该这样写!
2019/05/06 职场文书