在数学中,笛卡尔乘积是指两个集合XY的笛卡尓积(Cartesian product),又称有序对的其中一个成员

假设集合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表

SQL中笛卡尔积-cross join的用法SQL中笛卡尔积-cross join的用法 SQL中笛卡尔积-cross join的用法SQL中笛卡尔积-cross join的用法

 

select * from TEST_A a  CROSS JOIN  TEST_B b;

或者

select * from TEST_A a ,TEST_B b;

 SQL中笛卡尔积-cross join的用法

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

 

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

 

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

SQL中笛卡尔积-cross join的用法

 

 

 

inner join:

 

 

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

SQL中笛卡尔积-cross join的用法

 

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

 

left join:

 

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

SQL中笛卡尔积-cross join的用法SQL中笛卡尔积-cross join的用法

 

right join:

 

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

SQL中笛卡尔积-cross join的用法SQL中笛卡尔积-cross join的用法

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;

SQL中笛卡尔积-cross join的用法

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

相关文章:

  • 2021-04-11
  • 2022-12-23
  • 2021-08-09
  • 2021-06-10
  • 2022-12-23
猜你喜欢
  • 2022-01-15
  • 2022-12-23
  • 2022-01-15
  • 2022-12-23
  • 2022-12-23
  • 2023-03-19
  • 2021-08-26
相关资源
相似解决方案