MySQL—子查询

目录

▐ 子查询概述

▐ 准备工作

▐ 标量子查询

▐ 列子查询

▐ 表子查询

▐ 多信息嵌套


▐ 子查询概述

 •  子查询也称嵌套查询,即在一个查询语句中又出现了查询语句

 •  子查询可以出现在from 后面 或where后面

 •  出现在 from 后称表子查询,结果集一般为多行多列(把查询结果继续当做一张表)

 •  出现在 where 后称标量子查询 列子查询 结果集只有一行一列,或一行多列.

 •  标量子查询的结果集只有一行一列;列子查询的结果集是一列多行 (区别)

 接下来我会通过一个实例,通过代码给大家演示子查询

▐ 准备工作

📰 创建一个员工表(employee)和一个部门表(dept),两个表是关联关系.

-- 创建一个员工表employee(手动加入数据)
CREATE TABLE employee(
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(10),
gender VARCHAR(1),
age VARCHAR(3),
money INT ,
deptid INT,
CONSTRAINT FK_employee_dept_on_deptid FOREIGN KEY (deptid) REFERENCES dept(id)
)
-- 创建一个部门表dept并插入数据
CREATE TABLE dept(
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(10)
)

📰 我们将在此表的基础上进行子查询

▐ 标量子查询

 •  结果集:只有一行一列

 •  位置:where后

🏷️例如要查询工资最高的员工

SELECT * FROM employee WHERE money =  (SELECT MAX(money) FROM employee)

代码解读:📰

先查询出工资最高是多少(一行一列,最高工资肯定是一个数)

SELECT  MAX(money)  FROM  employee 

再将此作为条件再进行一次查询

SELECT * FROM  employee  WHERE  money =  (SELECT MAX(money) FROM employee)

▐ 列子查询

 •  结果集:一列多行

 •  位置:where后

🏷️例如要查询工资在2000~3000的员工信息

 SELECT * FROM employee WHERE money IN (SELECT money FROM employee WHERE money>2000 AND money<3000)

代码解读:📰

先查询出工资在2000~3000之间的值(一列多行,这个范围的工资值有多个)

SELECT  money  FROM  employee  WHERE  money>2000 AND money<3000

再将此作为条件再进行一次查询,只要工资符合条件的员工就被查询出来

 SELECT * FROM employee WHERE money IN (条件,也就是第一次的查询结果)

▐ 表子查询

 •  结果集:多列多行(可以看做又一张表)

 •  位置:from后

🏷️例如要查询同龄的年龄

 SELECT * FROM (SELECT age,COUNT(*)c FROM employee GROUP BY age)t WHERE  t.c>1

代码解读:📰

通过年龄对员工表分组,并计数每个年龄的人数(多行多列)

SELECT  age, COUNT(*)   FROM  employee  GROUP  BY  age

再将此结果当做一个新表进行二次查询 同龄的年龄,条件就是count(*)>1 )

SELECT * FROM (SELECT age,COUNT(*)c FROM employee GROUP BY age)t WHERE  t.c>1     

< 这里要注意对表的重命名 >

▐ 多信息嵌套

🏷️例如要查询出每个部门工资最高的员工信息

 SELECT * FROM employee s INNER JOIN (SELECT  MAX(money)maxmoney,deptid FROM employee GROUP BY deptid)tON s.money = t.maxmoney AND s.deptid = t.deptid

代码解读:📰

先按部门 分组查询出每个部门的最高工资是多少

SELECT  MAX(money)maxmoney, deptid   FROM  employee  GROUP BY  deptid

再将此查询结果与员工表关联查询

SELECT * FROM  employee s

INNER JOIN                            //内连接

(SELECT  MAX(money)maxmoney, deptid  FROM  employee  GROUP  BY deptid ) t
ON  s.money = t.maxmoney  AND  s.deptid = t.deptid 
  //查询条件

▐ 结语:

       希望这篇关于MySQl数据库—子查询的介绍能对大家有所帮助,欢迎大佬们留言或私信与我交流~~学海漫浩浩,我亦苦作舟!大家一起学习,一起进步!

本人微信: g2279605572


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/695490.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【数字图像处理笔记】Matlab实现图像平滑算法 均值-中值-高斯滤波 (三)

&#x1f48c; 所属专栏&#xff1a;【数字图像处理笔记】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#x…

autolabor(ROS开发笔记)__1

视频链接&#xff1a;ROS机器人 chapter 1 ROS概述与环境搭建 学习步骤&#xff1a; 1.了解该模块的相关概念 是什么&#xff0c;为什么学&#xff0c;前世今生&#xff0c;发展前景 2.安装官方软件包 具备基本的开发环境&#xff0c;简陋notepad 3.搭建集成开发环境(IDE,Int…

Unity射击游戏开发教程:(14)Unity 中的相机抖动

我以为这将是一个很容易添加到我的游戏中的功能,但编程中没有什么,尤其是刚开始的 GameDev。经过对如何创建相机抖动效果的一些研究后,有很多不同的方法来实现它。有一种使用动画、Cinemachine 或使用脚本的方法。本文将介绍如何创建脚本来创建相机抖动效果。现在,该脚本取…

SpringBoot 使用Outlook邮箱发送邮件

目录 一、开启Outlook设置 二、依赖 三、配置文件 四、代码调用 一、开启Outlook设置 开启设置如图&#xff1a; 二、依赖 <!-- 邮箱依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mai…

SQLZOO:The JOIN operation

数据表&#xff1a;game-gaol-eteam game idmdatestadiumteam1team210018 June 2012National Stadium, WarsawPOLGRE10028 June 2012Stadion Miejski (Wroclaw)RUSCZE100312 June 2012Stadion Miejski (Wroclaw)GRECZE100412 June 2012National Stadium, WarsawPOLRUS... goal …

向计算机输入两个整数,用一个函数求出两数之和

在一个函数中调用另一函数&#xff08;即被调用函数&#xff09;需要具备哪些条件呢&#xff1f; &#xff08;1&#xff09;首先被调用的函数必须是已经存在的函数&#xff08;是库函数或者用户自己定义的数&#xff09;&#xff0c;但光有这一条件还不够。 &…

本地生活市场竞争激烈,自营外卖平台实现月入上万,很轻松!

在中国&#xff0c;大约有300个地级市、2000个县&#xff08;包括县级市&#xff09;、4万个乡镇和66万个村庄&#xff0c;一起组成了近10亿人口的下沉市场。在本地生活领域&#xff0c;谁能够把握这一群体&#xff0c;谁就可能控制市场的主导地位。 大型平台是否可以把在一二…

ubuntu系统安装cpolar内网穿透详细教程

背景 想把自己的网站在外网访问,就需要做内网穿透,调研了很多个方案,但是最终还是选择了不需要实名,不需要公网ip的cpolar插件 账号准备 注册 注册地址: https://dashboard.cpolar.com/signup 登录 注册之后使用注册的账户和密码登录官网主页,就能看到安装步骤,不过…

RS8521XF功能和参数介绍及PDF资料

RS8521XF功能和参数介绍及PDF资料-公司新闻-配芯易-深圳市亚泰盈科电子有限公司 品牌: RUNIC(润石) 封装: SOT-23-5 描述: 零漂移,1uV Vos,350KHz,1通道运放 放大器数: 单路 增益带宽积(GBP): 350kHz 输入偏置电流(Ib): 1pA 压摆率(SR): 0.17V/us RS8521XF 是一款高性能的运算…

C语言/数据解构——(随即链表的复制)

一.前言 嗨嗨嗨&#xff0c;大家好久不见。已经有好几天没更新了。今天我们就分享一道链表题吧——随即链表的复制https://leetcode.cn/problems/copy-list-with-random-pointer废话不多说&#xff0c;让我们直接开始今天的题目分享吧。 二.正文 1.1题目描述 他和单链表不同…

初识指针(5)<C语言>

前言 在前几篇文章中&#xff0c;已经介绍了指针一些基本概念、用途和一些不同类型的指针&#xff0c;下文将介绍某些指针类型的运用。本文主要介绍函数指针数组、转移表&#xff08;函数指针的用途&#xff09;、回调函数、qsort使用举例等。 函数指针数组 函数指针数组即每个…

探索国外静态IP:跨境网络的基石

在数字化时代&#xff0c;互联网已经成为我们生活和工作的重要部分。无论是远程办公、在线教育还是跨境电商&#xff0c;稳定的网络连接都至关重要。而在这个过程中&#xff0c;国外静态IP以其独特的优势&#xff0c;成为了许多企业和个人用户的选择。 一、国外静态IP的应用场景…