MySQL子查询

😇作者介绍:一个有梦想、有理想、有目标的,且渴望能够学有所成的追梦人。

🎆学习格言:不读书的人,思想就会停止。——狄德罗

⛪️个人主页:进入博主主页

🗼专栏系列:进入MySQL专栏知识

🌼欢迎小伙伴们访问到博主的文章内容,在浏览阅读过程发现需要纠正的地方,烦请指出,愿能与诸君一同成长!

目录

文章内容如下

✏️前言

✏️一、where子句中使用子查询

✏️二、from子句中使用子查询:

✏️三、select子句中使用子查询

✏️四、having子句中使用子查询

✏️五、exists和not exists运算符

✏️总结


文章内容如下


✏️前言

MySQL子查询是指在一个SQL语句中嵌套使用的查询语句。子查询可以出现在SELECT、FROM、WHERE、HAVING和IN等语句中,并且能够根据外部查询的结果动态生成数据。

使用子查询可以实现更复杂的查询逻辑,它可以用来过滤、排序、聚合或连接数据。子查询通常会返回一个结果集,然后将该结果集用于外层查询的条件或操作。


✏️一、where子句中使用子查询

🧐返回年龄大于平均年龄的学生姓名和年龄。

SELECT name, age
FROM students
WHERE age > (SELECT AVG(age) FROM students);

👉这个查询就会返回年龄大于平均年龄的学生姓名和年龄。WHERE语句中的子查询:“子查询可以作为WHERE子句的一部分,用于过滤数据”


✏️二、from子句中使用子查询:

🧐返回每个员工的姓名和总销售额

SELECT t1.name, t2.total_sales
FROM employees AS t1
INNER JOIN (SELECT employee_id, SUM(sales) AS total_sales FROM sales GROUP BY employee_id) AS t2
ON t1.id = t2.employee_id;

👉这个查询会返回每个员工的姓名和总销售额,其中子查询用于计算每个员工的总销售额。FROM语句中的子查询:“子查询可以作为FROM子句的一部分,用于生成一个虚拟表,供外部查询使用”


✏️三、select子句中使用子查询

🧐返回每个客户的姓名和他们的订单数量

SELECT name, (SELECT COUNT(*) FROM orders WHERE customer_id = customers.id) AS order_count
FROM customers;

👉这个查询会返回每个客户的姓名和他们的订单数量,其中子查询用于计算每个客户的订单数量。SELECT语句中的子查询:子查询可以作为SELECT语句的一部分,用于获取数据或计算新的列


✏️四、having子句中使用子查询

🧐需要计算平均销售额,然后将其与每个销售员的销售额进行比较。使用HAVING子查询来筛选符合条件的销售员。

SELECT salesperson, SUM(amount) AS total_sales
FROM sales
GROUP BY salesperson
HAVING SUM(amount) > (SELECT AVG(amount) FROM sales);

在上述查询中,子查询(SELECT AVG(amount) FROM sales)用于获取销售表中所有销售额的平均值。然后,HAVING子句中的SUM(amount) > (SELECT AVG(amount) FROM sales)用于筛选出总销售额大于平均销售额的销售员。HAVING语句中的子查询:子查询可以作为HAVING子句的一部分,用于对分组后的数据进行过滤


✏️五、exists和not exists运算符

EXISTS和NOT EXISTS运算符:这些运算符常与子查询一起使用,用于检查子查询返回的结果是否存在。

SELECT column_name(s)
FROM table_name
WHERE EXISTS (SELECT column_name FROM table_name WHERE condition);

✏️总结

通过在这些位置使用子查询,可以实现复杂的查询逻辑,并根据外部查询的结果生成动态数据。子查询是MySQL中非常有用的功能之一,可以提供更强大和灵活的数据处理能力;子查询真的真的是MySQL中强大且灵活的工具,可以帮助我们进行更复杂的数据分析和处理操作。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Jenkins邮件配置报错com.sun.mail.smtp.SMTPSenderFailedException: 501

Jenkins邮件配置,配置完成各种信息之后,“通过发送测试邮件测试配置”点击Test configuration,报错 1、报错信息 com.sun.mail.smtp.SMTPSenderFailedException: 501 mail from address must be same as authorization userat com.sun.mail…

Xcode 15 beta 3 (15A5195k) 发布下载 - Apple 平台 IDE

Xcode 15 beta 3 (15A5195k) 发布下载 - Apple 平台 IDE (visonOS 1 beta 已发布) 7 月 5 日(北京时间今日凌晨)已发布。 IDE for iOS/iPadOS/macOS/watchOS/tvOS/visonOS 请访问原文链接:https://sysin.org/blog/apple-xcode-15/&#xf…

Flutter生命周期小结

Flutter 中的生命周期,包含以下几个阶段: createState ,在 StatefulWidget 中创建 State 的方法,当 StatefulWidget 调用时会触发 createState 。initState ,在 State 初始化时调用,因此可以在此期间执行 …

Python 基于招聘数据可视化系统

1 简介 Python 基于招聘数据可视化系统,视频效果如下: 基于Python的招聘信息可视化系统,附源码 随着国内的经济不断的快速发展,现在学生的就业压力也在逐年增加,网络上的招聘信息非常的丰富,但是对于学生而…

Flutter基础控件

Text:文字 Text("Flutter") Text是最常用也是最基础的,目前学习阶段只用来加载文字数据,更多属性和样式设置请查看源码自己探索。 Button:按钮 ElevatedButton:普通按钮 ElevatedButton(onPressed: () {if (kDebugMode) {print("Elevat…

安装和配置nginx(含https)

文章目录 安装Nginx配置单独的配置:https配置 nginx为什么可以处理高并发 安装Nginx sudo yum update sudo yum install epel-release sudo yum install nginx sudo systemctl start nginx安装好后可以打开自己的域名 看一下默认的页面 配置 具体参考Link 位置 …

软件工程——第7章实现知识点整理

本专栏是博主个人笔记,主要目的是利用碎片化的时间来记忆软工知识点,特此声明! 文章目录 1.实现由哪两个部分组成? 2.编码是什么?所选用的程序设计语言对程序的哪些特性有着深远影响? 3.软件测试在软件生…

Python编程实现针对回撤的交易策略

在金融交易市场上,回撤是一个常见的现象。因此,对于投资者来说,研究和设计针对回撤的交易策略是非常必要的。本文将介绍如何使用Python编程实现针对回撤的交易策略,以帮助投资者更好地进行交易。 一、回撤分析 在设计针对回撤的…

Cisco Catalyst 9000 Series Switches, IOS-XE Release Dublin-17.11.1 ED

Cisco Catalyst 9000 Series Switches, IOS-XE Release Dublin-17.11.1 ED Cisco Catalyst 9000 交换产品系列 请访问原文链接:https://sysin.org/blog/cisco-catalyst-9000/,查看最新版。原创作品,转载请保留出处。 作者主页:…

Basler相机一丢包就断开问题解决

问题描述: 两个相机, 一个相机aca2500-14gm连接电脑主板100M网卡没问题,帧率3帧,但是不会断。 一个相机aca2500-14gm连接USB转网口(千兆),pylon Viewer采图丢包严重并且几秒后相机断开。 解决…

Centos 7 下安装Redis

官网地址(英文):Redis 官网地址(中文):CRUG网站 or redis中文文档 Redis源码地址:GitHub - redis/redis: Redis is an in-memory database that persists on disk. The data model is key-v…

数据结构-排序

数据结构排序 1 知识框架2 插入排序2.1 直接插入排序2.2 折半插入排序2.3 希尔排序 3 交换排序3.1 冒泡排序3.2 快排 4 选择排序4.1 简单选择排序4.2 堆排序 5 归并和基数排序5.1 归并排序5.2 基数排序 1 知识框架 算法的稳定性:;两个相同的元素在排序算…

swiftUI和swift的区别

概述 SwiftUI是苹果公司推出的一种用于构建iOS、macOS、watchOS和tvOS应用程序界面的框架。它是基于Swift编程语言开发的,旨在简化UI开发过程并提供实时预览功能,使开发人员可以更快地构建出漂亮的应用程序界面。 Swift是苹果公司推出的一种面向对象的…

c++ word简单的写文本与画表格只支持docx

简单使用的代码如下所示&#xff1a; #include "stdafx.h" #include <windows.h> #include "minidocx.hpp" using namespace docx; using namespace std; std::string GB2312ToUTF8(const std::string& gb2312) { int len MultiByteToWid…

RK3588平台开发系列讲解(Camera篇)V4L2 主要特性

文章目录 一、V4L2 介绍1.1、模块化的架构1.2、统一的设备节点1.3、统一的视频数据格式1.4、支持多种视频设备1.5、支持流式 I/O1.6、支持控制参数1.7、支持事件通知二、V4L2使用场景沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇章主要讲解V4L2 主要特性。 一、…

首发价11999元?华为智慧屏S3Pro电视7月10日上市

华为最新推出了两款全新的智慧屏 S3 Pro&#xff0c;分别是65英寸和75英寸版本&#xff0c;售价分别为5999元和7999元。除此之外&#xff0c;华为还推出了全新的S3 Pro 86英寸型号&#xff0c;首发价为11999元。这款电视将于7月10日上市&#xff0c;对于感兴趣的用户来说&#…

视频关键帧AI化的多种方法

视频关键帧AI化的逻辑是将视频切分成一帧帧的画面&#xff0c;然后使用SD绘画固定风格&#xff0c;最后统一在拼接在一起成为一个新的视频。 不管是Mov2Mov还是Multi Frame都能制作这种视频。但是这些操作起来比较麻烦&#xff0c;经过尝试处理较稳定的方法是可以通过img2im的…

C语言学习准备-编辑器选择

今天继续给大家更新C语言经典案例 今天的案例会比昨天稍微有一些难度&#xff0c;但是同时还是非常经典的案例 本来是想给大家继续更新C语言经典案例&#xff0c;但是有朋友反应C语言编辑器的选择&#xff0c;刚好我自己也是想更换一下C语言的编辑器&#xff0c;跟大家分享一下…

基于Web的智慧交通3D可视化系统

前言 城市交通是城市社会活动、经济活动的纽带和动脉&#xff0c;智慧交通系统对城市经济发展和人民生活水平起着极其重要的作用。 背景 随着我国城市化进程不断加快&#xff0c;现代城市交通问题日益受到人们的关注。特别是汽车数量的与日俱增&#xff0c;给城市带来了大量…

中国物流,驶入大航海时代

出海的一体化&#xff0c;不仅仅是物流的一体化&#xff0c;更是产业链、供应链的一体化。在诸多问题下&#xff0c;想要帮助企业更好地出海&#xff0c;就不能只专注于自身的长板&#xff0c;而是需要先补齐短板。 作者|斗斗 编辑|皮爷 出品|产业家 出海时代真的要来了。…