更新时间: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);

相关文档