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 重写查询语句的三种策略
May 10 MySQL
修改MySQL的默认密码的四种小方法
May 26 MySQL
如何设计高效合理的MySQL查询语句
May 26 MySQL
Mysql数据库索引面试题(程序员基础技能)
May 31 MySQL
mysql获取指定时间段中所有日期或月份的语句(不设存储过程,不加表)
Jun 18 MySQL
为什么MySQL选择Repeatable Read作为默认隔离级别
Jul 26 MySQL
mysql配置SSL证书登录的实现
Sep 04 MySQL
MySQL修炼之联结与集合浅析
Oct 05 MySQL
mysql的数据压缩性能对比详情
Nov 07 MySQL
MySQL数据库如何给表设置约束详解
Mar 13 MySQL
mysql 获取相邻数据项
May 11 MySQL
分享很少见很有用的SQL功能CORRESPONDING
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
基于mysql的bbs设计(五)
2006/10/09 PHP
Fine Uploader文件上传组件应用介绍
2013/01/06 PHP
php删除文本文件中重复行的方法
2015/04/28 PHP
WordPress中用于获取文章信息以及分类链接的函数用法
2015/12/18 PHP
WordPress中自定义后台管理界面配色方案的小技巧
2015/12/29 PHP
PHP读取、解析eml文件及生成网页的方法示例
2017/09/04 PHP
php解析非标准json、非规范json的方式实例
2020/12/10 PHP
JQuery的一些小应用收集
2010/03/27 Javascript
JavaScript(JS) 压缩 / 混淆 / 格式化 批处理工具
2010/12/10 Javascript
js Select下拉列表框进行多选、移除、交换内容的具体实现方法
2013/08/13 Javascript
利用jQuery实现可输入搜索文字的下拉框
2013/10/23 Javascript
jQuery实现仿淘宝带有指示条的图片转动切换效果完整实例
2015/03/04 Javascript
jQuery无刷新分页完整实例代码
2015/10/27 Javascript
jquery.cookie.js实现用户登录保存密码功能的方法
2016/04/15 Javascript
js中作用域的实例解析
2017/03/16 Javascript
利用jQuery异步上传文件的插件用法详解
2017/07/19 jQuery
JS div匀速移动动画与变速移动动画代码实例
2019/03/26 Javascript
python中list常用操作实例详解
2015/06/03 Python
python获取各操作系统硬件信息的方法
2015/06/03 Python
Python使用functools模块中的partial函数生成偏函数
2016/07/02 Python
浅谈Python peewee 使用经验
2017/10/20 Python
PyQt5主窗口动态加载Widget实例代码
2018/02/07 Python
Python实现找出数组中第2大数字的方法示例
2018/03/26 Python
python查询mysql,返回json的实例
2018/03/26 Python
python3.5 email实现发送邮件功能
2018/05/22 Python
Python3.7实现中控考勤机自动连接
2018/08/28 Python
pycharm使用matplotlib.pyplot不显示图形的解决方法
2018/10/28 Python
Python 矩阵转置的几种方法小结
2019/12/02 Python
关于pytorch处理类别不平衡的问题
2019/12/31 Python
体育专业个人求职信范文
2013/12/27 职场文书
优秀班干部事迹材料
2014/01/26 职场文书
反邪教警示教育活动总结
2015/05/09 职场文书
投诉信格式范文
2015/07/02 职场文书
利用python调用摄像头的实例分析
2021/06/07 Python
动画电影《擅长捉弄人的高木同学》6月10日上映!
2022/03/20 日漫
win10识别不了U盘怎么办 win10系统读取U盘失败的解决办法
2022/08/05 数码科技