交叉连接为两个数据表间的笛卡尔乘积 (Cartesian product),两个数据表在结合时,不指定任何条件,即将两个数据表中所有的可能排列组合出来,以下例而言 CROSS JOIN 出来的结果数据列数为 3×5=15 条数据。在使用 WHERE、ON、USING 条件时不建议使用。

CROSS JOIN 语法 (SQL CROSS JOIN Syntax)

  1. SELECT table_column1, table_column2...
  2. FROM table_name1
  3. CROSS JOIN table_name2;

或这样写

  1. SELECT table_column1, table_column2...
  2. FROM table_name1, table_name2;

或这样写

  1. SELECT table_column1, table_column2...
  2. FROM table_name1
  3. JOIN table_name2;

CROSS JOIN 查询用法 (Example)

用户表 customers:

C_Id Name City Address Phone
1 張一 台北市 XX路100號 02-12345678
2 王二 新竹縣 YY路200號 03-12345678
3 李三 高雄縣 ZZ路300號 07-12345678

产品订单数据表 orders:

O_Id Order_No C_Id
1 2572 3
2 7375 3
3 7520 1
4 1054 1
5 1257 5

运行一个 CROSS JOIN 查询

  1. SELECT customers.Name, orders.Order_No FROM customers CROSS JOIN orders;

查询结果如下:

Name Order_No
張一 2572
王二 2572
李三 2572
張一 7375
王二 7375
李三 7375
張一 7520
王二 7520
李三 7520
張一 1054
王二 1054
李三 1054
張一 1257
王二 1257
李三 1257

https://www.fooish.com/sql/cross-join.html