2024-07-11
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
MySQLでは、LEFT JOIN
右のテーブルに一致するレコードがない場合でも、左のテーブル (つまり、LEFT JOIN キーワードの左側のテーブル) からすべてのレコードを返すために使用されます。右側のテーブルに一致しないレコードの場合、結果セットの右側のテーブル部分は NULL で埋められます。についてON
そしてWHERE
句の使用は、LEFT JOIN
の役割は異なります。
ON
後で。もし入っているならON
後で右側のテーブルに追加の条件付き制限があり、これは接続時にも適用されますが、左側のテーブルからすべてのレコードを返すという原則には影響しません。JOIN
操作によって生成された結果セットはさらにフィルタリングされます。条件が付けられたときWHERE
この句を使用すると、条件を満たさないレコード (左のテーブルからでも右のテーブルからでも) が削除されます。これは、特に NULL 値を処理する場合、左のテーブルからすべてのレコードを返すという本来の意図に影響を与える可能性があります。十分にご注意ください。具体的なケース 1:
2 つのテーブルがあるとします。1 つは次のとおりです。employees
(従業員テーブル)、もう 1 つはdepartments
(部門テーブル) では、一部の従業員が特定の部門に割り当てられていない場合でも、すべての従業員とその部門名を調べたいと考えています。
従業員テーブル:
id | 名前 |
---|---|
1 | アリス |
2 | ボブ |
3 | キャロル |
部門テーブル:
id | 名前 |
---|---|
1 | 人事 |
2 | それ |
3 | マーケティング |
で、employees
テーブルdepartment_id
このフィールドは、割り当てられた部門がないことを示す NULL にすることもできます。
ON の使用例:
SELECT employees.name, departments.name AS department_name
FROM employees
LEFT JOIN departments ON employees.department_id = departments.id;