Technologieaustausch

MySQL: Auf oder wo nach dem linken Join verwenden?

2024-07-11

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

In MySQL,LEFT JOIN Wird verwendet, um alle Datensätze aus der linken Tabelle (d. h. der Tabelle links vom Schlüsselwort LEFT JOIN) zurückzugeben, auch wenn in der rechten Tabelle keine passenden Datensätze vorhanden sind. Für diejenigen Datensätze, die nicht in der rechten Tabelle übereinstimmen, wird der rechte Tabellenteil der Ergebnismenge mit NULL gefüllt.umONUndWHEREDie Verwendung von Klauseln, sie sind inLEFT JOINDie Rollen sind unterschiedlich:

  • AN Klausel: Wird zum Definieren von Join-Bedingungen verwendet, d. h. zum Bestimmen, welche Datensätze miteinander verbunden werden sollen.Wenn Sie Datensätze basierend auf der Beziehung zwischen bestimmten Feldwerten in der linken und rechten Tabelle kombinieren müssen, sollten diese Bedingungen erfüllt seinON später.wenn drinONSpäter gibt es für die rechte Tabelle zusätzliche bedingte Einschränkungen, die auch beim Verbinden angewendet werden, aber das Prinzip der Rückgabe aller Datensätze aus der linken Tabelle nicht beeinträchtigen.
  • WO Klausel: Wird für bestandene Paare verwendetJOIN Der durch die Operation generierte Ergebnissatz wird weiter gefiltert.Wenn die Bedingung platziert wirdWHEREIn der Klausel werden diejenigen Datensätze entfernt, die die Bedingungen nicht erfüllen (ob aus der linken oder der rechten Tabelle), was die ursprüngliche Absicht, alle Datensätze aus der linken Tabelle zurückzugeben, beeinträchtigen kann, insbesondere wenn Sie NULL-Werte verarbeiten besonders vorsichtig.

Konkreter Fall eins:

Angenommen, wir haben zwei Tabellen, eine istemployees(Mitarbeitertabelle), der andere istdepartments(Abteilungstabelle) möchten wir alle Mitarbeiter und deren Abteilungsnamen herausfinden, auch wenn einige Mitarbeiter keiner bestimmten Abteilung zugeordnet sind.

Mitarbeitertabelle:

AusweisName
1Alice
2Bob
3Carol

Abteilungstabelle:

AusweisName
1Personalwesen
2ES
3Marketing

In,employeesTischdepartment_idDas Feld kann NULL sein, was darauf hinweist, dass keine Abteilung zugewiesen ist.

Beispiel für die Verwendung von ON:

SELECT employees.name, departments.name AS department_name
FROM employees
LEFT JOIN departments ON employees.department_id = departments.id;