INNER JOIN(內部連接)在兩張表之間依指定欄位進行匹配,**僅回傳雙方都有匹配值的列**。若某列在另一表無對應資料,該列不會出現在結果集中。`INNER JOIN` 與 `JOIN` 同義。
SELECT 表1.欄位1, 表1.欄位2, 表2.欄位3
FROM 表1
INNER JOIN 表2
ON 表1.關聯欄位 = 表2.關聯欄位
[WHERE 篩選條件]
[ORDER BY 排序欄位];
| Id_P | LastName | FirstName | Address | City |
|---|---|---|---|---|
| 1 | Adams | John | Oxford Street | London |
| 2 | Bush | George | Fifth Avenue | New York |
| 3 | Carter | Thomas | Changan Street | Beijing |
| Id_O | OrderNo | Id_P |
|---|---|---|
| 1 | 77895 | 3 |
| 2 | 44678 | 3 |
| 3 | 22456 | 1 |
| 4 | 24562 | 1 |
| 5 | 34764 | 65 |
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
INNER JOIN Orders
ON Persons.Id_P = Orders.Id_P
ORDER BY Persons.LastName;
| LastName | FirstName | OrderNo |
|---|---|---|
| Adams | John | 22456 |
| Adams | John | 24562 |
| Carter | Thomas | 77895 |
| Carter | Thomas | 44678 |
若需保留 Persons 所有列(無訂單者顯示 NULL),改用 LEFT JOIN。`INNER JOIN` 嚴格要求雙邊匹配,語義更精確、結果集更小、執行計劃通常更優。
`INNER JOIN` 是關聯查詢的基石。掌握「僅匹配列輸出」的語義、正確建立索引、善用別名與多表鏈接,是寫出高效 SQL 的關鍵。