交叉加入

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 文件