
# 笛卡尔连接
#### 功能描述
笛卡尔连接（CROSS JOIN）把第一个表的每一条记录和第二个表的所有记录相连接。如果第一个表的记录数为m，第二个表的记录数为n，则会产生m \* n条记录。
#### 语法格式
```
SELECT attr_expr_list FROM table_reference
  CROSS JOIN table_reference [ON join_condition];
SELECT attr_expr_list FROM table_reference
  CROSS JOIN table_reference;
```
#### 参数说明
| **参数**              | **说明**                                                      |
|:---|:---|
| **attr_expr_list**  | 查询列表达式列表，指定需要返回的列。                                          |
| **table_reference** | 进行连接的表名或子查询。必须是已存在的表，否则会出错。                                 |
| **CROSS JOIN**      | 笛卡尔连接关键字，求笛卡尔积的标准方式。                                        |
| **join_condition**  | 可选的连接条件。如果该条件恒成立（如1=1），该连接即为笛卡尔连接。不带ON子句的CROSS JOIN也表示笛卡尔积。 |
   
#### 注意事项
- 所要进行JOIN连接的表必须是已经存在的表，否则会出错。
- CROSS JOIN是求笛卡尔积的标准方式。如果不带ON子句，则直接计算两表的笛卡尔积。
- 笛卡尔连接可能产生大量记录，请谨慎使用。
 
#### 示例
返回 student_info 与 course_info 两张表中学生姓名与课程名称的所有组合。
```
SELECT student_info.name, course_info.courseName FROM student_info CROSS JOIN course_info;
```
等价写法（使用恒成立的 ON 条件）：
```
SELECT student_info.name, course_info.courseName FROM student_info CROSS JOIN course_info ON (1 = 1);
```
