mysql(十五)

article/2025/7/5 9:56:15

目录

子查询

1.准备工作

2--创建表格

3--插入数据

2.where 子查询单列单个数据

格式

查询

3.where 子查询单列多个数据(in)

格式

查询

使用子查询

4.from 多行多数据

格式

查询


子查询

将select的查询的返回结果 当成另外一个selet语句的内容去使用。

子查询放在()里面

注意:把select当成一个函数,一个可以返回结果的函数。只是我们可以给他传递不同参数,获取不同的结果。

1.准备工作

2--创建表格
-- 创建表格CREATE table class (class_id INT PRIMARY KEY AUTO_INCREMENT,class_name VARCHAR(20)
);
create table student (id INT PRIMARY KEY AUTO_INCREMENT;student_name VARCHAR(30),student_sex char(1),student_info VARCHAR(500),student_class_id int,-- 添加主键约束CONSTRAINT student_class_fk FOREIGN KEY(student_class_id) REFERENCES class(class_id)
);

3--插入数据
-- 插入数据
insert into class VALUES
(null, '一班'),
(null, '二班'),
(null, '三班')
;INSERT into student VALUES
(null, '偷走晚霞的人', '男', '一个学生', 1),
(null, '惜.己', '男', '一个学生', 2),
(null, '小玖', '女', '一个学生', 1),
(null, '张三', '男', '一个学生', 3),
(null, '莉莉', '男', '一个学生', 1),
(null, '雪夜', '男', '一个学生', 2),
(null, '小明', '女', '一个学生', 1),
(null, '小新', '男', '一个学生', 3)
;

2.where 子查询单列单个数据

前提返回的数据是 单列单个

格式

这里不一定是等号,还可以是其他的逻辑运算符号

select * from 表名2 where  表名2.需要对比的字段  = (select 字段 from 表名2 where 条件); 

查询

假设我们不知道一班的id ,但是又想查询一班的学生信息.先通过class_name 查询 一班的id

# 通过名字查询 一班的id =1
select class_id from class where class_name = '一班';

最后通过 id去获取 一班的信息

# 通过名字查询 一班的id =1
select class_id from class where class_name = '一班';

这里可以使用内查询==》可以看到查询结果是一样的

只是替换了 第二条sql语句中 为 1 的地方。去掉第一sql中的;

-- 整合两个sqlSELECT * from student 
WHERE 
student_class_id  = (select class_id from class where class_name = '一班') ;

3.where 子查询单列多个数据(in)

格式

select * from 表名2 where  表名2.需要对比的字段  in (select 字段 from 表名2 where 条件); 

查询

假设我们不知道一班,三班的id ,但是又想查询一班,三班的学生信息.先通过class_name 查询 一班的id和三班的id

-- 查询一班三班的信息 
select  class.class_id  FROM class where class_name in ('一班', '三班');
-- 获取到id 为1 , 3

通过id去查询

-- 使用id 去查询二班三班的学生
SELECT * from student where student_class_id in (1,3)

使用子查询
SELECT * from student where student_class_id in(select  class.class_id  FROM class where class_name in ('一班', '三班'));

可以看到只是替换了 1,3的部分。

感觉跟套娃差不多,只是使用一个select的语句的查询结果供另外一个select使用。

4.from 多行多数据

这个需要注意起别名

格式
# 查询学生表信息
SELECT * from (select * From student ) s where s.student_sex = '女';

查询

查询一班的女生子查询版

注:这个是使用当前表的查询的结果再次进行查询。(这个个人感觉不到意义)

# 查询学生表信息
SELECT * from (select * From student ) s where s.student_sex = '女';

查询一班二班男生的信息以及班级的信息

-- 查询 一班,二班,三班 男生的信息select * from class   LEFT JOIN  (SELECT * from student where student_sex = '男') bs on class.class_id =  bs.student_class_id;


http://www.hkcw.cn/article/tJavWPNUZn.shtml

相关文章

Unity 环境搭建

Unity是一款游戏引擎,可用于开发各种类型的游戏和交互式应用程序。它由Unity Technologies开发,并在多个平台上运行,包括Windows、macOS、Linux、iOS、Android和WebGL。Unity也支持虚拟现实(VR)和增强现实(AR)技术,允许用户构建逼…

从0开始学习R语言--Day15--非参数检验

非参数检验 如果在进行T检验去比较两组数据差异时,假如数据里存在异常值,会把数据之间的差异拉的很大,影响正常的判断。那么这个时候,我们可以尝试用非参数检验的方式来比较数据。 假设我们有A,B两筐苹果&#xff0c…

NX847NX855美光固态闪存NX862NX865

NX847NX855美光固态闪存NX862NX865 美光固态闪存技术深度解析:NX847、NX855、NX862、NX865的多维探索 一、技术架构与核心优势 美光NX系列固态闪存的卓越性能源于其底层技术的创新突破。以G9 NAND技术为核心的产品线(如NX865),…

秋招Day12 - 计算机网络 - UDP

说说TCP和UDP的区别? TCP使用无边界的字节流传输,可能发生拆包和粘包,接收方并不知道数据边界;UDP采用数据报传输,数据报之间相互独立,有边界。 应用场景方面,TCP适合对数据的可靠性要求高于速…

Baklib知识中台重塑企业知识生态

Baklib四库体系构建知识中枢 Baklib通过独创的四库体系(显性知识库、隐性经验库、场景案例库、智能模型库),构建起企业知识管理的核心枢纽。显性知识库集中存储制度文档、产品手册等结构化信息,隐性经验库则通过问答社区、专家笔…

字节跳动社招面经 —— BSP驱动工程师(5)

接前一篇文章:字节跳动社招面经 —— BSP驱动工程师(4) 本文内容参考: ARM64架构启动流程_arm64 linux kernel 启动流程-CSDN博客 特此致谢! 上一回讲解了“嵌入式充电站”发的一篇文章字节跳动社招面经——BSP驱动工…

超越与沉浸:关于意识觉醒的量子化生存艺术

一、现象世界的认知架构:从AR渲染到神经编译 人类意识系统犹如搭载生物算法的增强现实(AR)设备,每秒将4000万比特的原始感官数据,通过神经编译引擎压缩成40比特的认知全息图。在这个过程中: 海马体材质库自…

自主设计一个DDS信号发生器

DDS发生器 DDS信号发生器是直接数字频率合成技术,采用直接数字频率合成(Direct Digital Synthesis,简称DDS)技术,把信号发生器的频率稳定度、准确度提高到与基准频率相同的水平,并且可以在很宽的频率范围内进行精细的频率调节。采…

浏览器网站禁止黏贴,但是要交作业怎么快速黏贴

出现的问题: 写这篇博客的原因:学校最近要求使用 iwrite 写英语作文,但是浏览器禁止黏贴,我们自己只能手动输入,但是作为程序猿的我想到了一个很好的解决方案。 解决思路: 我们直接在浏览器的控制台的源代码…

CAN通讯协议中各种参数解析

1.各种参数缩写 2.多帧传输时间参数解析 - Sender(左侧) 指的是 多帧数据的发送者,也就是: ECU(被测系统 / 响应方) - Receiver(右侧) 指的是 多帧数据的接收者,也就是…

第十二节:第五部分:集合框架:Set集合的特点、底层原理、哈希表、去重复原理

Set系列集合特点 哈希值 HashSet集合的底层原理 HashSet集合去重复 代码 代码一:整体了解一下Set系列集合的特点 package com.itheima.day20_Collection_set;import java.util.HashSet; import java.util.LinkedHashSet; import java.util.Set; import java.util.…

deepseek原理和项目实战笔记2 -- deepseek核心架构

混合专家(MoE) ​​混合专家(Mixture of Experts, MoE)​​ 是一种机器学习模型架构,其核心思想是通过组合多个“专家”子模型(通常为小型神经网络)来处理不同输入,从而提高模型的容…

迈向分布式智能:解析MCP到A2A的通信范式迁移

智能体与外部世界的桥梁之言: 在深入探讨智能体之间的协作机制之前,我们有必要先厘清一个更基础的问题:**单个智能体如何与外部世界建立连接?** 这就引出了我们此前介绍过的 **MCP(Model Context Protocol&…

TCP/IP协议精华总结pdf分享

hi ,大家好,应小伙伴们的要求,上次分享了个人的一些学习和职场经验,其中网络协议PDF文档是我之前学习协议的时候总结一些精华知识,网络属于基本功,是互联网必备知识,我深信掌握好核心20%知识&am…

齐次变换矩阵与运动旋量的指数映射

在三维空间中,刚体的位姿(位置和姿态)可以通过齐次变换矩阵进行描述。齐次变换矩阵是一种 44 的矩阵,其一般形式为: T [ R p 0 1 ] T\begin{bmatrix}R&p\\0&1\end{bmatrix} T[R0​p1​] 其中, R …

MySQL DDL操作全解析:从入门到精通,包含索引视图分区表等全操作解析

目录 一、DDL 基础概述 1.1 DDL 定义与作用 1.2 DDL 语句分类 1.3 数据类型与存储引擎 1.3.1 数据类型 1.3.2 存储引擎差异 二、基础 DDL 语句详解 2.1 创建数据库与表 2.1.1 创建数据库 2.1.2 创建表 2.2 修改表结构 2.2.1 添加列 2.2.2 修改列属性 2.2.3 删除列…

torch.randn vs torch.rand

1 分布类型: randn:生成标准正态分布(均值 0,标准差 1) rand:生成 [0, 1) 区间的均匀分布 2 数值范围: randn:可能产生负数(范围 (-∞, ∞)) rand&#xff…

NLP学习路线图(十九):GloVe

自然语言处理(NLP)的核心挑战在于让机器理解人类语言的丰富含义。词向量(Word Embeddings)技术通过将词语映射到高维实数空间,将离散的符号转化为连续的向量,为NLP任务奠定了坚实基础。在众多词向量模型中&…

极客时间:用 FAISS、LangChain 和 Google Colab 模拟 LLM 的短期与长期记忆

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

dify应用探索

一个典型的 Agent Multi-Agent 系统 智能导购会根据用户意图分类并传递给相应商品导购Agent,返回商品信息。采用Multi-Agent架构,其中Router Agent负责对用户问题进行意图 分析,并路由到其它商品导购Agent,商品导购Agent负责向厥客收 集商品…