SQL - Right Join:初學者的全面指南

歡迎,未來的數據庫魔法師們!今天,我們將深入探索 SQL Right Joins 的神奇世界。別擔心如果你之前從未寫過一行代碼——我將成為你這次旅程中的友好導航。在本教程結束時,你將能夠像專業人士一樣進行右連接!

SQL - Right Join

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 子句指定它們是如何連接的

一個簡單的例子

想像我們有兩個表:EmployeesDepartments。並不是所有部門都有員工,但我們想要看到所有部門,即使它們是空的。

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