SQL - Right Join:初學者的全面指南
歡迎,未來的數據庫魔法師們!今天,我們將深入探索 SQL Right Joins 的神奇世界。別擔心如果你之前從未寫過一行代碼——我將成為你這次旅程中的友好導航。在本教程結束時,你將能夠像專業人士一樣進行右連接!
SQL Right Join:你的新最佳朋友
Right Join 是什麼?
讓我們從基礎開始。Right Join 就像邀請你一個群體(我們稱之為右表)的所有朋友參加派對,然後檢查他們是否在另一個群體(左表)中有共同的朋友。如果他們有,太好了!如果他們沒有,也沒關係——他們仍然可以來參加派對。
在 SQL 的術語中,Right Join 返回右表(table2)的所有記錄,以及左表(table1)中的匹配記錄。如果沒有匹配,結果在左側為 NULL。
基本語法
以下是一個基本的 Right Join 的樣子:
SELECT column_name(s)
FROM table1
RIGHT JOIN table2
ON table1.column_name = table2.column_name;
讓我們分解一下:
- 我們選擇我們想要看到的列
- 我們從
table1
(我們的左表)開始 - 我們將其與
table2
(我們的右表)RIGHT JOIN - 我們使用 ON 子句指定它們是如何連接的
一個簡單的例子
想像我們有兩個表:Employees
和 Departments
。並不是所有部門都有員工,但我們想要看到所有部門,即使它們是空的。
SELECT Employees.Name, Departments.DepartmentName
FROM Employees
RIGHT JOIN Departments
ON Employees.DepartmentID = Departments.DepartmentID;
這個查詢將顯示所有部門,即使它們沒有員工。對於沒有員工的部門,Name 列將顯示 NULL。
使用 Right Join 連接多個表:越多越熱鬧!
有時候,兩個表並不夠。讓我們說我們想要從 Salaries
表中添加薪水信息。
SELECT e.Name, d.DepartmentName, s.Salary
FROM Employees e
RIGHT JOIN Departments d ON e.DepartmentID = d.DepartmentID
RIGHT JOIN Salaries s ON e.EmployeeID = s.EmployeeID;
在這裡,我們使用表別名(e, d, s)來使我們的查詢更易於閱讀。這個查詢將顯示所有部門和所有薪水,即使沒有匹配的員工。
嚴格提示:順序很重要
當使用 Right Join 連接多個表時,連接的順序可能會影響你的結果。始終從你想要確保完全呈現的表開始(在這個例子中,是 Departments)。
Right Join 與 WHERE 子句:挑剔數據
有時候,我們想要對我們的數據進行更有選擇性的處理。這時 WHERE 子句就派上用場了。
SELECT e.Name, d.DepartmentName
FROM Employees e
RIGHT JOIN Departments d ON e.DepartmentID = d.DepartmentID
WHERE d.Location = 'New York';
這個查詢將顯示所有在紐約的部門,以及那些部門中的任何員工。
找到孤獨的部門
想要找到沒有員工的部門?以下是如何做到的:
SELECT d.DepartmentName
FROM Employees e
RIGHT JOIN Departments d ON e.DepartmentID = d.DepartmentID
WHERE e.EmployeeID IS NULL;
這個查詢使用 Right Join 包括所有部門,然後過濾那些沒有找到員工的部門。
所有知識整合:真實世界場景
讓我們想像我們正在運營一個學校數據庫。我們有學生、課程和報名的表。我們想要看到所有課程、報名的學生數量以及平均成績。
SELECT
c.ClassName,
COUNT(s.StudentID) AS EnrolledStudents,
AVG(e.Grade) AS AverageGrade
FROM Classes c
LEFT JOIN Enrollments e ON c.ClassID = e.ClassID
LEFT JOIN Students s ON e.StudentID = s.StudentID
GROUP BY c.ClassName;
這個查詢將顯示所有課程,即使它們沒有報名的學生。COUNT 和 AVG 函數將適當地處理 NULL 值。
常見 Right Join 方法
以下是一個常見 Right Join 方法表,你可能會發現它們很有用:
方法 | 描述 | 示例 |
---|---|---|
基本右連接 | 連接兩個表,保留右表的所有記錄 | SELECT * FROM table1 RIGHT JOIN table2 ON table1.id = table2.id |
帶 WHERE 的右連接 | 過濾 Right Join 的結果 | SELECT * FROM table1 RIGHT JOIN table2 ON table1.id = table2.id WHERE table2.column = 'value' |
多重右連接 | 連接兩個以上的表 | SELECT * FROM table1 RIGHT JOIN table2 ON table1.id = table2.id RIGHT JOIN table3 ON table2.id = table3.id |
使用 USING 的右連接 | 當列名相同時簡化連接條件 | SELECT * FROM table1 RIGHT JOIN table2 USING (id) |
帶 GROUP BY 的右連接 | 組合 Right Join 的結果 | SELECT table2.column, COUNT(*) FROM table1 RIGHT JOIN table2 ON table1.id = table2.id GROUP BY table2.column |
記住,熟能生巧!不要害怕在自建的數據庫中試驗這些查詢。快樂編程,願 JOIN 力與你同在!
Credits: Image by storyset