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