Mysql笛卡尔积详解(附实现多表查询代码实现)

前言:实际开发中往往数据来自不同的表,所以需要多表联合查询。多表查询是对多张表的数据取笛卡尔积

1.何为笛卡尔积?

简单来说:就是 简单的 排列组合。

把两张表的记录,放在一起进行排列组合的所有情况。

下面我们通过一个示例来进行说明:




 排列组合如下:

通过以上可以发现:笛卡尔积的列数就是两个表的列数之和( 3 + 2 = 5),行数则是两个表的行数之积(2 * 4 = 8 )。因此,需要注意的是:我们在进行多表查询的时候(计算笛卡尔积的过程),如果两个表数据很,就会非常低效,甚至成为危险操作

代码

Tip(多表情况):如果是三个表的话,那么就是先将两个表进行笛卡尔积运算,再用这个表与另外一个表进行笛卡尔积操作(以此类推)。

a.何为连接条件?

因为毕竟笛卡尔积只是简单的将他们进行排列组合(并没有进行筛选有效信息),我们将有效信息这一筛选的过程称为:连接条件(student.classId = classes.classId)

 b.联合查询实质

得出结论:多表查询/联合查询 = 笛卡尔积 + 连接条件 + 其他条件(具体需求)。 

c.代码实现: 

join on 实现:

注意:这里都有相同的记录名(classId),所以这里通过 表名.列名 的方法实现,如果不用则会报错:

  • 5
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值