更新时间:2026-07-03 GMT+08:00
笛卡尔连接
功能描述
笛卡尔连接(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);
父主题: 连接