

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# JOIN 子句
<a name="join-clause"></a>

SQL JOIN 子句用於根據通用欄位，結合兩個或多個資料表中的資料。結果可能會或可能不會改變，具體取決於指定的聯結方法。未在另一個資料表中找到相符項目時，左和右外部聯結會保留來自其中一個聯結資料表的值。

JOIN 類型和聯結條件的組合會決定哪些資料列包含在最終結果集中。然後 SELECT 和 WHERE 子句會控制傳回哪些資料欄，以及如何篩選資料列。了解不同的 JOIN 類型以及如何有效地使用它們是 SQL 的關鍵技能，因為它可讓您以靈活且強大的方式結合來自多個資料表的資料。

## 語法
<a name="join-clause-syntax"></a>

```
SELECT column1, column2, ..., columnn
FROM table1
join_type table2
ON table1.column = table2.column;
```

## Parameters
<a name="join-clause-parameters"></a>

 *SELECT 欄 1、欄 2、...、columnN*   
您要包含在結果集中的資料欄。您可以從 JOIN 中涉及的其中一個或兩個資料表中選取資料欄。

 *FROM 資料表 1*   
JOIN 操作中的第一個 （左） 資料表。

 *【加入 \| 內部加入 \| 左側 【外部】 加入 \| 右側 【外部】 加入 \| 完整 【外部】 加入】 資料表 2： *  
要執行的 JOIN 類型。JOIN 或 INNER JOIN 只會傳回兩個資料表中具有相符值的資料列。  
LEFT 【OUTER】 JOIN 會傳回左側資料表中的所有資料列，以及右側資料表中的相符資料列。  
RIGHT 【OUTER】 JOIN 會傳回右側資料表中的所有資料列，以及左側資料表中的相符資料列。  
FULL 【OUTER】 JOIN 會傳回兩個資料表中的所有資料列，無論是否相符。  
CROSS JOIN 會從兩個資料表建立資料列的笛卡爾產品。

 *ON table1.column = table2.column*   
聯結條件，指定如何比對兩個資料表中的資料列。聯結條件可以根據一個或多個資料欄。

 *WHERE 條件： *  
選用子句，可用於根據指定的條件進一步篩選結果集。

## 範例
<a name="Join_examples"></a>

下列範例是兩個資料表之間的聯結和 USING 子句。在這種情況下，資料欄 listid 和 eventid 會被用來作為聯結資料欄。結果限制為 5 個資料列。

```
select listid, listing.sellerid, eventid, listing.dateid, numtickets
from listing join sales
using (listid, eventid)
order by 1
limit 5;

listid | sellerid | eventid | dateid | numtickets
-------+----------+---------+--------+-----------
1      | 36861    | 7872    | 1850   | 10
4      | 8117     | 4337    | 1970   | 8
5      | 1616     | 8647    | 1963   | 4
5      | 1616     | 8647    | 1963   | 4
6      | 47402    | 8240    | 2053   | 18
```