MySQL RIGHT JOIN
1. MySQL RIGHT JOIN の概要
RIGHT JOIN 句は、右側のテーブル(table2)のすべての行を返し、左側のテーブル(table1)からは一致する行のみを返します。
左側のテーブルに一致するレコードがない場合、結果セット内の左側テーブル由来のカラムには NULL が格納されます。
1.1 RIGHT JOIN の構文
SELECT table1.column1, table1.column2, ..., table2.column1, ...
FROM table1
RIGHT JOIN table2
ON table1.condition_column = table2.condition_column; 注意: この構文は、リレーションのあるカラムに基づいて2つのテーブルを結合します。マッチングの条件を指定するには ON キーワードを使用します。
2. デモ用データベース
このチュートリアルでは、有名な Northwind サンプルデータベースを使用します。
以下は、「Orders(注文)」テーブルの抜粋です。
| OrderID | CustomerID | EmployeeID | OrderDate | ShipperID |
|---|---|---|---|---|
| 10308 | 2 | 7 | 1996-09-18 | 3 |
| 10309 | 3 | 3 | 1996-09-19 | 1 |
| 10310 | 77 | 8 | 1996-09-20 | 2 |
次に、「Employees(従業員)」テーブルの抜粋です。
| EmployeeID | LastName | FirstName | BirthDate | Photo |
|---|---|---|---|---|
| 1 | Davolio | Nancy | 1968-12-08 | EmpID1.pic |
| 2 | Fuller | Andrew | 1952-02-19 | EmpID2.pic |
| 3 | Leverling | Janet | 1963-08-30 | EmpID3.pic |
これら 2 つのテーブル間の関連カラム(related column)は、EmployeeID カラムであることがわかります。
3. MySQL RIGHT JOIN の使用例
次の SQL は、すべての従業員と、その従業員が担当した可能性のあるすべての注文を返します。
-- すべての従業員をリストアップし、関連する注文情報を紐付けます
-- 注文を担当していない従業員も結果に含まれます
SELECT Orders.OrderID, Employees.LastName, Employees.FirstName
FROM Orders
RIGHT JOIN Employees ON Orders.EmployeeID = Employees.EmployeeID
ORDER BY Orders.OrderID; 注意:RIGHT JOIN キーワードは、左側のテーブル(Orders)に一致するデータがなくても、右側のテーブル(Employees)のすべてのレコードを返します。