交叉加入
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 文档