mysql cross join的用法_SQL中笛卡尔积-cross join的用法

在数学中,笛卡尔乘积是指两个集合X和Y的笛卡尓积(Cartesian product),又称直积,表示为X × Y,第一个对象是X的成员而第二个对象是Y的所有可能有序对的其中一个成员

假设集合A={a, b},集合B={0, 1, 2},则两个集合的笛卡尔积为{(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)}。

MySQL中笛卡尔积相当于我们学习数学中集合的概念,数据库中运用此思想,产生了很多满足我们实际需要的SQL语句。

语法:

SELECT * FROM [TABLE 1] CROSS JOIN [TABLE 2]

OR

SELECT * FROM [TABLE 1], [TABLE 2]  //重点,平时写法要注意啊

案例:

数据库的数据有:

TEST_A表:                TEST_B表

53009871

1031936125c8d8f92ec58d8315b17542.png 

7880ba4deea63a927cdba8220daa3d0a.png

53009871

select * from TEST_A a  CROSS JOIN  TEST_B b;

或者

select * from TEST_A a ,TEST_B b;

9b857cba3566673153a5e2bf6455f14f.png

两表直接笛卡尔积的结果数量是两表的数据量相乘(列相加,行相乘)

带where条件id相等的笛卡尔积:

select * from TEST_A a cross join TEST_B b where a.ID = b.ID;

b13860609a47d3b720587a1d349d7bba.png

inner join:

select *from TEST_A ainnerjoin TEST_B bon a.ID = b.ID;

fd59af726475ccbac8cda5a95ffd74d7.png

带where条件id相等的笛卡尔积和inner join结果相同,但是inner join效率快一点

left join:

select *from TEST_A aleftjoin TEST_B bon a.ID = b.ID;

53009871

4d41774c8327393cc542be58c6688b56.png

right join:

select *from TEST_A arightjoin TEST_B bon a.ID = b.ID;

53009871

e24c416532c0f18d9c0fb2cb5050f6eb.png

left join:TEST_A表的ID为空时拼接TEST_B表的内容为空,right join则相反

full join:

select * from TEST_A a full join TEST_B b on a.ID = b.ID;

006a720609b193cffc3a2e7fa7925ce5.png

full join:等于left join和right join的并集

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值