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.mzph.cn/pingmian/11475.shtml

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

相关文章

远程终端协议TELNET

一、概述 TELNET是一个简单的远程终端协议&#xff0c;是互联网正式标准。 实现在本地对远程计算机进行操作&#xff1b;在本地键盘输入的字符通过应用层TELNET协议传输到远程服务器上&#xff0c;同时远程服务器把字符传送过来显示在本地的显示器上&#xff1b;TELNET协议采…

B - AtCoder Amusement Park题解

文章目录 原题翻译题目大意思路代码 原题翻译 翻译我已经在上篇翻译过了&#xff0c;详情 题目大意 有 n n n个小团体需要乘坐小船&#xff0c;第 i i i个团体有 a i a_i ai​个人&#xff0c;而小船只有 k k k个座位。同时&#xff0c;小团体需要按照给出的顺序来乘坐小船&…

智能制造装备业项目数字化管理之项目模板管理

智能制造装备&#xff0c;作为工业4.0的核心组成部分&#xff0c;正日益受到全球制造业的关注。这类装备融合了信息技术和制造技术&#xff0c;旨在提高生产效率、降低成本并增强产品的个性化。然而&#xff0c;随着智能制造装备行业的飞速发展&#xff0c;项目管理复杂性也在不…

java toString方法

在Java中&#xff0c;toString()方法是Object类中的一个方法&#xff0c;它用于返回对象的字符串表示形式。当需要将对象转换为字符串时&#xff0c;Java会调用对象的toString()方法。 默认情况下&#xff0c;Object类中的toString()方法返回一个由类名和对象的哈希码组成的字…

数据结构-跳表:自己理解的通俗总结 + 使用python实现

前提&#xff1a;有序数据 基于链表 操作&#xff1a;有序数据的查询 插入 删除 时间复杂度&#xff1a;O(logn) 思想&#xff1a;将有序数据进行分层&#xff0c;最底层是存储所有的数据&#xff0c;之后每一层逐层减少数据&#xff0c;并且需要注意 每一层的数据是基于其前…

软件文档-总体测试计划书(Word原件2024)

软件资料清单列表部分文档&#xff1a; 工作安排任务书&#xff0c;可行性分析报告&#xff0c;立项申请审批表&#xff0c;产品需求规格说明书&#xff0c;需求调研计划&#xff0c;用户需求调查单&#xff0c;用户需求说明书&#xff0c;概要设计说明书&#xff0c;技术解决…

Spring事件分析以及多种使用方式实践 使用场景 附可执行demo

我们先说说它的特点&#xff0c;优缺点&#xff0c;以及使用场景&#xff0c;然后再说具体是怎么做的 Spring事件驱动的优点 松耦合 事件驱动模型通过发布-订阅机制促进组件间的解耦&#xff0c;发送者和接收者不需要直接知道对方的存在&#xff0c;只需关注事件本身&#xff…

【机器学习-06】Scikit-Learn机器学习工具包进阶指南:机器学习分类模型实战与数据可视化分析

&#x1f3a9; 欢迎来到技术探索的奇幻世界&#x1f468;‍&#x1f4bb; &#x1f4dc; 个人主页&#xff1a;一伦明悦-CSDN博客 ✍&#x1f3fb; 作者简介&#xff1a; C软件开发、Python机器学习爱好者 &#x1f5e3;️ 互动与支持&#xff1a;&#x1f4ac;评论 &…

[猫头虎分享21天微信小程序基础入门教程]第7天:小程序的权限与API使用

第7天&#xff1a;小程序的权限与API使用 &#x1f510; 自我介绍 大家好&#xff0c;我是猫头虎&#xff0c;一名全栈软件工程师。今天我们将继续微信小程序的学习&#xff0c;重点了解如何使用微信小程序的API&#xff0c;以及如何管理和请求小程序的权限。通过这些知识&am…

可视化:智慧能源解决方案,降本增效,运筹帷幄。

智慧能源可视化解决方案是一种利用先进的技术和工具&#xff0c;将能源数据以直观、可视的方式呈现出来&#xff0c;帮助企业更好地管理能源使用&#xff0c;降低成本&#xff0c;提高效率的解决方案。 以下是一些智慧能源可视化解决方案可以帮助企业降本增效、智连未来的方式&…

js前端获取农历日期

对于公历来说&#xff0c;直接 new 一个 Date 就能获取到&#xff0c;而对于农历来讲可就很难了&#xff0c;因为农历需要有许多复杂计算&#xff0c;虽然一般用的甚少&#xff0c;但对于某些场景来说还是会需要的&#xff0c;那么怎样获取农历日期呢&#xff1f; 这里推荐一个…

Linux:进程信号

生活角度的信号 a.信号在生活中&#xff0c;随时可以产生(信号的产生和我是异步的) b.你能认识这个信号 c.我们知道信号产生了&#xff0c;我能识别这个信号&#xff0c;信号该怎么处理 d.我们可能正在做着更重要的事情&#xff0c;把到来的信号暂不处理(1.我记得这个事 2.…

这是摆脱困境的最好方法

20多年前&#xff0c;我开始涉足创业&#xff0c;经历过的那种停滞感我都记不清了。这是这条职业道路上最常见的挣扎之一&#xff0c;而且很难摆脱。 卡住的城市是一个地方&#xff0c;任何有创造力的&#xff0c;自由职业者和好奇的人经常去。这是一个很难逃离的地方。 被困…

要不还是别搞Google Play了

​好消息&#xff1a;误导性条款合规了 坏消息: 应用被暂停了&#xff0c;太难玩了 5.13日收到邮件&#xff0c;被告知应用因为应用内体验问题被暂停上架了 邮件大意是由于违反执行流程政策(Violation of Enforcement Process policy)。 这个政策主要是讲Google Play会对账户/…

求四个整数中的最大值(函数)(C语言)

一、N-S流程图&#xff1b; 二、运行结果&#xff1b; 三、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h>int main() {//初始化变量值&#xff1b;int a, b, c, d, max;//获取用户输入的数据&#xff1b;printf("请输入4个整数&#x…

你知道在 TS 中判断两个类型相等有多难吗?

公众号&#xff1a;程序员白特&#xff0c;欢迎一起交流学习~ TypeScript 中的类型相等 如果我们想判断两个变量是否相等&#xff0c;可以简单的通过 或 来进行比较&#xff0c;但是对比两个类型则不行。 在 TypeScript 中&#xff0c;类型是静态的&#xff0c;只会在编译时…

【Esp32S3 | Arduino】在Arduino中使用C++的高级特性

文章目录 前言一、Arduino中的Vector示例代码二、Arduino中的Map示例代码前言 最近在玩Arduino,自上次发现Arduino可以用Template,能使用高级宏后,这次发现Arduino竟可以使用C++中的一些STL容器,这属实令人震惊。起因是我打算做一个动态的数组,但是手动实现一些操作属实麻烦…

polars学习-03 数据类型转换

背景 polars学习系列文章&#xff0c;第3篇 数据类型转换。 该系列文章会分享到github&#xff0c;大家可以去下载jupyter文件 仓库地址&#xff1a;https://github.com/DataShare-duo/polars_learn 小编运行环境 import sysprint(python 版本&#xff1a;,sys.version.spli…

Hack The Box-SolarLab

总体思路 SMB获取敏感信息->CVE-2023-33733漏洞注入->CVE-2023-32315->敏感信息泄露 信息收集&端口利用 nmap -sSVC -p1-10000 10.10.11.16发现目标开放了80、135、139、445和6791端口&#xff0c;并且对应的端口也给出了重定向的标志&#xff0c;将域名加入到…

实验过程演示【计算机网络实验】

前言 这是陈旧已久的草稿2023-05-20 11:23:54 这个是计算机网络的一个实验&#xff0c;现在也不知道这个是啥来着。 现在2024-5-12 22:33:17&#xff0c;发布到[计算机网络实验]专栏中。 实验过程演示 2023-5-18 20:17:45 1&#xff0e;搭建一个多跳网络拓扑&#xff0c;…