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中你可能忽略的COLLATION实例详解
May 12 MySQL
超详细教你怎么升级Mysql的版本
May 19 MySQL
MySQL库表名大小写的选择
Jun 05 MySQL
MySQL的安装与配置详细教程
Jun 26 MySQL
mysql事务对效率的影响分析总结
Oct 24 MySQL
MySQL表类型 存储引擎 的选择
Nov 11 MySQL
SQL 聚合、分组和排序
Nov 11 MySQL
教你如何让spark sql写mysql的时候支持update操作
Feb 15 MySQL
mysql insert 存在即不插入语法说明
Mar 25 MySQL
MySQL详解进行JDBC编程与增删改查方法
Jun 16 MySQL
MySQL的意向共享锁、意向排它锁和死锁
Jul 15 MySQL
MySQL远程无法连接的一些常见原因总结
Sep 23 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
YB217、YB235、YB400浅听
2021/03/02 无线电
经典PHP加密解密函数Authcode()修复版代码
2015/04/05 PHP
Dojo 学习笔记入门篇 First Dojo Example
2009/11/15 Javascript
Javascript的匿名函数小结
2009/12/31 Javascript
第一次接触神奇的Bootstrap基础排版
2016/07/26 Javascript
Js查找字符串中出现次数最多的字符及个数实例解析
2016/09/05 Javascript
JSON与js对象序列化实例详解
2017/03/16 Javascript
nodejs实现大文件(在线视频)的读取
2020/10/16 NodeJs
vue 属性拦截实现双向绑定的实例代码
2018/10/24 Javascript
详解微信小程序-扫一扫 wx.scanCode() 扫码大变身
2019/04/30 Javascript
微信小程序如何引用外部js,外部样式,公共页面模板
2019/07/23 Javascript
微信小程序scroll-view实现滚动到锚点左侧导航栏点餐功能(点击种类,滚动到锚点)
2020/06/11 Javascript
解决vue props传Array/Object类型值,子组件报错的情况
2020/11/07 Javascript
vue动态设置路由权限的主要思路
2021/01/13 Vue.js
[46:47]2014 DOTA2国际邀请赛中国区预选赛 DT VS HGT
2014/05/22 DOTA
Python过滤函数filter()使用自定义函数过滤序列实例
2014/08/26 Python
Django中的CACHE_BACKEND参数和站点级Cache设置
2015/07/23 Python
Python中is和==的区别详解
2018/11/15 Python
TensorFlow tf.nn.conv2d实现卷积的方式
2020/01/03 Python
keras CNN卷积核可视化,热度图教程
2020/06/22 Python
如何使用html5与css3完成google涂鸦动画
2012/12/16 HTML / CSS
HTML5+WebSocket实现多文件同时上传的实例
2016/12/29 HTML / CSS
欧铁通票官方在线销售网站:Eurail.com
2017/10/14 全球购物
三星新西兰官网:Samsung新西兰
2019/03/05 全球购物
Craghoppers德国官网:户外和旅行服装
2020/02/14 全球购物
高中生毕业自我鉴定范文
2013/12/22 职场文书
领导证婚人证婚词
2014/01/13 职场文书
面试后的英文感谢信
2014/02/01 职场文书
体育教师个人的自我评价
2014/02/16 职场文书
教师评语大全
2014/04/28 职场文书
金融专业银行实习证明模板
2014/11/28 职场文书
导游词范文
2015/02/13 职场文书
拥有这5个特征人,“命”都不会太差
2019/08/16 职场文书
励志正能量20句:送给所有为梦想拼搏的人
2019/11/11 职场文书
理解python中装饰器的作用
2021/07/21 Python
sql时间段切分实现每隔x分钟出一份高速门架车流量
2022/02/28 SQL Server