交叉连接为两个数据表间的笛卡尔乘积 (Cartesian product),两个数据表在结合时,不指定任何条件,即将两个数据表中所有的可能排列组合出来,以下例而言 CROSS JOIN 出来的结果数据列数为 3×5=15 条数据。在使用 WHERE、ON、USING 条件时不建议使用。
CROSS JOIN 语法 (SQL CROSS JOIN Syntax)
SELECT table_column1, table_column2...FROM table_name1CROSS JOIN table_name2;
或这样写
SELECT table_column1, table_column2...FROM table_name1, table_name2;
或这样写
SELECT table_column1, table_column2...FROM table_name1JOIN 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 查询
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 |
