CROSS JOIN 關鍵字 (SQL CROSS JOIN Keyword) - 交叉連接
交叉連接為兩個資料表間的笛卡兒乘積 (Cartesian product),兩個資料表在結合時,不指定任何條件,即將兩個資料表中所有的可能排列組合出來,以下例而言 CROSS JOIN 出來的結果資料列數為 3×5=15 筆,因此,當有 WHERE、ON、USING 條件時不建議使用。
CROSS JOIN 語法 (SQL CROSS JOIN Syntax)
SELECT table_column1, table_column2...
FROM table_name1
CROSS JOIN table_name2;
或這樣寫:
SELECT table_column1, table_column2...
FROM table_name1, table_name2;
或這樣寫:
SELECT table_column1, table_column2...
FROM table_name1
JOIN 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 |