SQL JOIN
跨表查詢核心
JOIN 用來把兩張或多張表依關聯欄位組合。常見有 INNER、LEFT、RIGHT、FULL。當資料被拆到不同表時,JOIN 就是把商業問題重新拼起來的關鍵。
- INNER JOIN:只取交集。
- LEFT JOIN:保留左表全部資料。
- RIGHT JOIN:保留右表全部資料。
- FULL OUTER JOIN:保留雙方全部資料。
Example 1 - INNER JOIN
SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate FROM Orders INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID;
Example 2 - LEFT JOIN 查沒有下單的客戶
SELECT c.CustomerID, c.CustomerName, o.OrderID FROM Customers c LEFT JOIN Orders o ON c.CustomerID = o.CustomerID WHERE o.OrderID IS NULL;
Example 3 - JOIN + 聚合
SELECT c.CustomerName, COUNT(o.OrderID) AS OrderCount FROM Customers c LEFT JOIN Orders o ON c.CustomerID = o.CustomerID GROUP BY c.CustomerName ORDER BY OrderCount DESC;
學習順序: 先熟悉 INNER JOIN 與 LEFT JOIN,大多數商業查詢已足夠應付。