技術共有

MySQL: 左結合のどこで使用しますか?

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;