笛卡尔积的错误 [MySQL][数据库]

笛卡尔积的错误

什么是笛卡尔积的错误?

我们将多表查询中因为没有建立多表之间连接引起的多表查询的问题就称之为:“笛卡尔积的错误”

这里我们通过几个例子来理解笛卡尔积的错误:

eg1: 查询员工表中的员工id和部门表中的部门名称

SELECT employees id,department_name
#这一条语句就等价于: FROM employees CROSS JOIN departments;
/*
CROSS JOIN关键字的作用就是将任意表进行连接,即使两张表不相关
*/
FROM employees,departments;
  • 这个时候我们如果说员工表中有107条记录,部门表中有27条记录,这个时候我们这次多表查询的结果(也就是查询的部门表中的员工id和部门表中的部门名称)也应该有107条记录 , 但是这个时候我们运行之后我们会发现这个时候结果有2889条记录,那么这2889条记录是怎么来的?
    • 这里其实是因为: 我们缺少了多表之间的连接条件,所以我们的员工表中查询出来的每一条记录都和我们的部门表中的所有的记录匹配了一遍,所以这个时候就会有: 107 * 27 = 2889条记录

我们将上述这种因为没有建立多表连接引起的多表查询问题就称之为:“笛卡尔积的错误”

总结: 出现笛卡尔积的错误的原因: 多表查询中缺少了多表的连接条件
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值