ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
笛卡尔积是关系代数里的一个概念,通俗的说就是两个集合中的每一个成员,都与对方集合中的任意一个成员有关联。 <br/> 笛卡尔积使用`cross join`实现,即使不使用`cross join`,使用我们学过的任何`join`操作也会在下面的条件下产生笛卡尔积: (1)省略连接条件; (2)连接条件无效; (3)所有表中的所有行互相连接; <br/> ```sql select * from left_tbl; +--------------+----------------+---------------+--+ | left_tbl.id | left_tbl.name | left_tbl.age | +--------------+----------------+---------------+--+ | 1 | 张三 | 20 | | 2 | 李四 | 22 | | 3 | 王五 | 25 | +--------------+----------------+---------------+--+ select * from right_tbl; +---------------+-----------------+----------------+--+ | right_tbl.id | right_tbl.name | right_tbl.age | +---------------+-----------------+----------------+--+ | 1 | 张三 | 20 | | 2 | 李四 | 22 | | 4 | 王五 | 25 | +---------------+-----------------+----------------+--+ ############ 笛卡尔积 ############## -- 笛卡尔积【返回的行数=左表的行数*右表的行数】 -- cross join 不能使用 on,只能使用 where 【写法1】select * from left_tbl, right_tbl; 【写法2】select * from left_tbl lt cross join right_tbl rt; +--------+----------+---------+--------+----------+---------+--+ | lt.id | lt.name | lt.age | rt.id | rt.name | rt.age | +--------+----------+---------+--------+----------+---------+--+ | 1 | 张三 | 20 | 1 | 张三 | 20 | | 2 | 李四 | 22 | 1 | 张三 | 20 | | 3 | 王五 | 25 | 1 | 张三 | 20 | | 1 | 张三 | 20 | 2 | 李四 | 22 | | 2 | 李四 | 22 | 2 | 李四 | 22 | | 3 | 王五 | 25 | 2 | 李四 | 22 | | 1 | 张三 | 20 | 4 | 王五 | 25 | | 2 | 李四 | 22 | 4 | 王五 | 25 | | 3 | 王五 | 25 | 4 | 王五 | 25 | +--------+----------+---------+--------+----------+---------+--+ ```