#Mysql 中的左右连接问题

Mysql 中的左右连接问题


最近碰到sql左右连接问题,查阅了有关资料,现在做一些总结:

  1. 笛卡尔积
  2. 左连接
  3. 右连接
  4. 区别

1. 笛卡尔积:在数学中,两个集合X和Y的笛卡儿积(Cartesian product),又称直积,表示为X × Y,第一个对象是X的成员而第二个对象是Y的所有可能有序对的其中一个成员。
设A,B为集合,用A中元素为第一元素,B中元素为第二元素构成有序对,所有这样的有序对组成的集合叫做A与B的笛卡尔积,记作AxB.
笛卡尔积的符号化为:
A×B={(x,y)|x∈A∧y∈B}
例如,A={a,b}, B={0,1,2},则
A×B={(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)}
B×A={(0, a), (0, b), (1, a), (1, b), (2, a), (2, b)}


2. 左连接:上面讲了笛卡尔积,那么左连接和这个有什么关系,就是以左表(A)为主表,右表(B)以on条件来匹配;

 SELECT  * FROM  A LEFT  JOIN  B ON A.id=B.id;

表A
这里写图片描述

表B
这里写图片描述

当运行 SELECT * FROM A LEFT JOIN B ON A.id=B.id 结果如下:

这里写图片描述

结果是:以左表(A)为基准,显示右表(B)匹配到的信息,对于左表中没有匹配到的,显示为null;


3.右连接:右连接当然就是以右表作为基准表了;

当运行 SELECT * FROM A RIGHT JOIN B ON A.id=B.id 结果如下:

这里写图片描述

结果显示 :以右表(B)左右基准,B表只有3个记录,A表有4个记录,
A匹配B,以A为基准,所以只显示三条记录


4.区别:根据上面的结果,就能发现左右连接就是关于,以左表或者右表来作为基准,来进行匹配显示的过程;
如果你想以左表来作为基准显示就用左表,反之,亦是如此!根据业务需求来改变!

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值