MySQL 联合查询执行原理:多表笛卡尔积

MySQL 联合查询执行原理:多表笛卡尔积

在 MySQL 执行多表联合查询时,如果没有指定连接条件(如 JOIN...ONWHERE),系统会执行最基础的笛卡尔积运算。

1. 基础数据准备

学生表 (Table A)

id (编号) name (姓名) gender (性别)
1 张三
2 李四
3 王五
4 赵六

班级表 (Table B)

id (编号) name (班级)
1 1班
2 2班

2. 笛卡尔积的执行过程

对多张表进行笛卡尔积时,MySQL 会遵循以下逻辑进行组合:

  1. 取第一条记录:先从第一张表(学生表)中取出第一条记录(张三)。
  2. 全量组合 :将这条记录分别与第二张表(班级表)中的每一条记录进行组合,生成新的记录。
  • 张三 + 1班 生成第1条结果
  • 张三 + 2班 生成第2条结果
  1. 循环往复:接着取出学生表的第二条记录(李四),再次与班级表的所有记录组合。
  2. 最终结果 :直到遍历完第一张表的所有行,得到一个全排列结果集

3. 联合查询结果集 (全排列)

最终生成的查询结果如下表所示:

id 姓名 性别 班级.id 班级名
1 张三 1 1班
1 张三 2 2班
2 李四 1 1班
2 李四 2 2班
3 王五 1 1班
3 王五 2 2班
4 赵六 1 1班
4 赵六 2 2班

相关推荐
木易士心10 分钟前
MyBatis数据源切换全面解析
数据库
Whyn12 分钟前
MySQL 学习笔记(二)
mysql
新中地GIS开发老师19 分钟前
地信职业百科④:GIS开发工程师
前端·数据库·gis·webgis·三维gis开发
云和恩墨27 分钟前
从“第二存储”到多智能体协作,云和恩墨充实数据基础设施产品矩阵
数据库
ClouGence33 分钟前
SAP HANA 到 Doris 数据迁移:4 种方案对比与迁移教程
数据库·后端·dba
霸道流氓气质34 分钟前
ApiPost 中配置自动获取 Token 并调用业务接口完整指南
java·服务器·数据库
我不想名字重复38 分钟前
redis缓存和数据库数据保持一致
数据库·redis·缓存
宇宙第一小趴菜1 小时前
三、Oracle 核心原理
数据库·oracle
码出钞能力2 小时前
apache-shardingsphere-5.5.3自定义分片算法
数据库
兜有米啦2 小时前
数据库第二次作业
数据库