Mysql学习之笛卡尔积(交叉连接)

Mysql学习之笛卡尔积(交叉连接)

1、笛卡尔乘积是一个数学运算。

假设我有两个集合 X Y ,那么 X Y 的笛卡尔积就是 X Y 的所有可能组合,也就是第一个对象来自于 X ,第二个对象来自于 Y 的所有可能。组合的个数即为两个集合中元素个数的乘积数。
在数学中的定义:假设集合A={a, b},集合B={0, 1, 2},则两个集合的笛卡尔积为{(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)}。
图解如下图所示:

2、在不同的SQL语言中笛卡尔积的表示方法也各不相同。

在SQL92中,笛卡尔积也称为 交叉连接,英文是 CROSS JOIN 。在 SQL99 中也是使用 CROSS JOIN表示交叉连接。其作用就是可以把任意的数据表进行连接,即使这两张数据表不相关。

3、在MySQL中如下情况会出现笛卡尔积错误情况:

        1-省略多个表的连接条件(或关联条件)
        2-连接条件(或关联条件)无效
        3-所有表中的所有行互相连接
解决办法:

在WHERE加入有效的连接条件。

SELECT 表1.column , 表2.column
FROM 表1,表2
WHERE 表1.column1 = 表2.column2;  -- 连接条件

即:在多个表中有相同列时,在列名前加上表明前缀。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小菠萝Mm

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值