跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
SQL

MySQL 分组查询、聚合查询与联合查询

介绍 MySQL 进阶查询知识。涵盖查询规则(总量、单位、方向、量组)、分组查询(group by、having)、聚合查询(count、sum、avg、max、min)以及联合查询(表关联设计、笛卡尔积拼接、内连接、左外连接、全外连接、自连接)。重点讲解了如何通过 group by 分组筛选,聚合函数计算逻辑,以及多表关联时的连接方式与数据合并策略。

草莓泡芙发布于 2026/3/28更新于 2026/10/21116 浏览
MySQL 分组查询、聚合查询与联合查询

一、查询规则

文章配图

1. 计算总量

计算总量 往指定列竖直延伸

2. 计算单位

计算单位 是一条行水平对应

3. 计算方向

计算方向 是水平合或竖直合,除了聚合函数的计算方向为计算单位竖直合,其它的计算方向都为水平合

4. 计算量组

计算量组 是一次计算进行的对象量,一个量组 对应一个计算结果,通过group by以指定列字段合数据相同进行分组

二、分组查询

select col,... from tb_name where 条件 group by col,... having 条件;

1. group by

group by 分组是按照 指定列字段 水平单位合数据相同的上下水平划分成组

2. having

where 条件 在分组之前 进行的条件筛选,写在 group by 的前面,having 条件 在分组之后 对合组结果 进行的条件筛选,写在 group by 的后面

三、聚合查询

sql 里,函数的参数是列

  • 聚合函数 都只能传入一个参数(一个列 或一个表达式列 或*),
  • 聚合函数的计算方向 是特定的 计算单位竖直合

1. count

select count([distinct] col) from tb_name;

计算 每个计算量组里 计算单位的个数,除全列查询外 计算单位的数据为 null 的 不计入计算单位个数

2. sum

select sum([distinct] col) from tb_name;

计算 每个计算量组里 计算单位的数据和,会对计算单位里的数据 强转成 double进行计算,遇到 null 会跳过不参与运算

3. avg

select avg([distinct] col) from tb_name;

计算 每个计算量组里 计算单位的数据平均值

4. max

select max([distinct] col) from tb_name;

计算 每个计算量组里 计算单位的数据最大值

5. min

select min([distinct] col) from tb_name;

计算 每个计算量组里 计算单位的数据最小值

四、联合查询

在表内 有信息完整的 关联字段互联的 多表 能通过关联字段拼接 把表信息 完整合并成大表 在一起

1. 表的关联字段增添设计

文章配图

1.1 主对表单向对应

由于 mysql 不支持数组,设计增添表中的关联字段时,最好直接取一个 只有单向对应对象的表 为主对表,将主对表的记录全穷举完 为完整的一侧信息,再将关联字段 对着在主对表完整的侧面 进行共字段纽带的 对应信息填充

1.2 主对表多向对应

如果两对象是多对多的关系,主对表必须得 多向对应对象时,每个记录同时对应的 关联字段多个数据 会成数组

1.2.1 数组拆分

要将数组内容 并着重复 id 向下拆分成 一对一的多个记录

1.2.2 关联表存放

一般是不会在主对表原表上 进行修改拆分 改变原表的记录行数据,而是再设计一个 存放关联字段的中枢表 来存放这些拆分出的 所有一对一的关联记录,拼接时 两个表都往中枢表 关联字段地拼接,最后三个表拼接在一起 成完整信息的大表

2. 笛卡尔积拼接

文章配图

多个表中 已设计好有关联字段在内 能互相拼接的多表 去笛卡尔积拼接

2.1 总拼情况
  • 两个表的 列字段属性 全部合并
  • 两个表的 记录条所有情况排列组合地 拼接成合并记录

合并后的大表的信息是完整的 但有过载着错误合拼的记录,包含有 关联字段数据不同地合拼的 错误拼接记录 与关联字段数据相同能并的 正确拼接的记录

2.2 筛选拼接

用两表的 两关联字段数据相同的正确连接条件 搜索出完整的 正确拼接记录 (内连接)

  • 多表查询时,不能像单表查询直接 select 表名 默认全列查询,而是要正常指定字段,如果要全列查询:用 *所有表的所有列或者 表别名.*指定表的所有列
2.2.1 内连接

select col,... from tb_name1,tb_name2 where rec1 = rec2(and...);

select col,... from tb_name1 join tb_name2 on rec1 = rec2 (and...) join tb_name3 on rec1 = rec3;

内连接即搜索 左右记录能相同合并共内的 正确拼接的记录

2.2.2 左外连接

select col,... from tb_name1 left join tb_name2 on rec1 = rec2;

把表 1 左外连接表 2,左外连接会确保 内正确连接完后 左表记录没有连接上的记录 也全搜索出来,此时它对应连接的右表记录 则为空

2.2.3 全外连接

全外连接会确保 内正确连接完后 左右表记录没有连接上的记录 也都全搜索出来,此时它们各自对应连接的左右表记录 为空的

2.2.4 自连接

select col,... from tb_name as name1, tb_name as name2 where name1.recol =name2.recol

将表 自己与自己进行笛卡尔积拼接,sql 中的条件比较 都是对列与列之间进行的,如果需要 对行与行之间进行条件比较,就自己的字段 对自己笛卡尔积 复制一份 到列有,行与行内容之间进行的比较 就转到列上有了 就可用条件进行 行与行内容的比较了

目录

  1. 一、查询规则
  2. 1. 计算总量
  3. 2. 计算单位
  4. 3. 计算方向
  5. 4. 计算量组
  6. 二、分组查询
  7. 1. group by
  8. 2. having
  9. 三、聚合查询
  10. 1. count
  11. 2. sum
  12. 3. avg
  13. 4. max
  14. 5. min
  15. 四、联合查询
  16. 1. 表的关联字段增添设计
  17. 1.1 主对表单向对应
  18. 1.2 主对表多向对应
  19. 1.2.1 数组拆分
  20. 1.2.2 关联表存放
  21. 2. 笛卡尔积拼接
  22. 2.1 总拼情况
  23. 2.2 筛选拼接
  24. 2.2.1 内连接
  25. 2.2.2 左外连接
  26. 2.2.3 全外连接
  27. 2.2.4 自连接

更多推荐文章

查看全部
  • TCP Socket 网络编程详解:API、多线程与守护进程
  • 数据结构:快速排序与归并排序的深入优化
  • Python 动态图表制作指南:基于 Matplotlib FuncAnimation
  • Java 反射机制详解:从原理到实战
  • OpenAI 国会指控 DeepSeek“非法蒸馏”,字节发布 Seedance 2.0,Java 26 预览版来了
  • Webnovel Writer:基于 Claude Code 的长篇网文 AI 创作系统
  • 前端 Base64 格式文件上传详解:原理、实现与最佳实践
  • AI 安全:Stable Diffusion 视觉提示词注入攻击原理与实现
  • 近五年微/纳米机器人赋能肿瘤精准治疗:聚焦 GBM
  • Spring Boot 日志体系详解与实战配置指南
  • OpenCode 开源 AI 编程助手:安装与实战指南
  • VR 大空间技术在文旅产业的创新应用与体验升级
  • 生成式 AI 大模型提示词工程实践
  • 易语言自动化实战:办公、测试、数据抓取与游戏脚本开发
  • OpenClaw 生态厂商对比:2026 主流 AI 智能体平台深度评测
  • 基于 DeepSeek 和 Cursor 构建智能代码审查工具实战
  • RPC 原理与 BRPC 实战:基于 C++ 的分布式通信实现
  • HarmonyOS 应用开发初体验:DevEco Studio 与 ArkTS 基础
  • Open WebUI MCPo 技术解析:MCP 协议转 OpenAPI 代理及集成实践
  • 算法实战:Z 字形变换与外观数列模拟解法

相关免费在线工具

  • SQL 美化和格式化

    在线格式化和美化您的 SQL 查询(它支持各种 SQL 方言)。 在线工具,SQL 美化和格式化在线工具,online

  • SQL转CSV/JSON/XML

    解析 INSERT 等受限 SQL,导出为 CSV、JSON、XML、YAML、HTML 表格(见页内语法说明)。 在线工具,SQL转CSV/JSON/XML在线工具,online

  • CSV 工具包

    CSV 与 JSON/XML/HTML/TSV/SQL 等互转,单页多 Tab。 在线工具,CSV 工具包在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online