交叉加入
CROSS JOIN
在两个不使用显式连接子句的表之间执行连接,并产生两个表的笛卡尔乘积。笛卡尔积表示一个表的每一行与连接中第二个表的每一行组合。例如,如果 TABLEA
有 20 行而 TABLEB
有 20 行,那么结果将是 20*20 = 400
输出行。
例:
SELECT *
FROM TABLEA CROSS JOIN TABLEB;
这也可以写成:
SELECT *
FROM TABLEA, TABLEB;
以下是两个表之间 SQL 交叉连接的示例:
样品表: TABLEA
+-------+---------+
| `VALUE` | NAME |
+-------+---------+
| 1 | ONE |
| 2 | TWO |
+-------+---------+
样本表: TABLEB
+-------+--------+
| `VALUE` | NAME |
+-------+--------+
| 3 | THREE |
| 4 | FOUR |
+-------+--------+
现在,如果执行查询:
SELECT *
FROM TABLEA CROSS JOIN TABLEB;
输出:
+-------+--------+-------+--------+
| `VALUE` | NAME | VALUE | NAME |
+-------+--------+-------+--------+
| 1 | ONE | 3 | THREE |
| 1 | ONE | 4 | FOUR |
| 2 | TWO | 3 | THREE |
| 2 | TWO | 4 | FOUR |
+-------+--------+-------+--------+
这是两个表之间交叉连接的方式: http://i.stack.imgur.com/fMjRr.jpg
有关 Cross Join 的更多信息: Oracle 文档