MySQL 速習チュートリアル

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(注文)」テーブルの抜粋です。

OrderIDCustomerIDEmployeeIDOrderDateShipperID
10308271996-09-183
10309331996-09-191
103107781996-09-202

次に、「Employees(従業員)」テーブルの抜粋です。

EmployeeIDLastNameFirstNameBirthDatePhoto
1DavolioNancy1968-12-08EmpID1.pic
2FullerAndrew1952-02-19EmpID2.pic
3LeverlingJanet1963-08-30EmpID3.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)のすべてのレコードを返します。