Moderne SQL-Syntax: LEFT JOIN und Mehrfachtabellenauswahl in der FROM-Klausel
SQL bietet zwei verschiedene Tabellenverbindungssyntax: (1) Listen Sie alle Tabellen in der FROM-Klausel auf und verwenden Sie die WHERE-Klausel, um die Verbindungsbedingungen anzugeben. (2) Verwenden Sie die Syntax LEFT JOIN und INNER JOIN. Während die meisten SQL-Dialekte beide Syntaxen akzeptieren, ist letztere vorzuziehen, insbesondere bei der Durchführung von Inner Joins.
Traditionelle Syntax: Mehrdeutigkeit äußerer Verknüpfungen
Die herkömmliche Syntax (Auflisten von Tabellen in der FROM-Klausel) ist anfällig für Mehrdeutigkeiten, wenn INNER JOIN und OUTER JOIN in derselben Abfrage verwendet werden. Betrachten Sie das folgende Beispiel:
<code class="language-sql">SELECT * FROM Company, Department, Employee WHERE Company.ID *= Department.CompanyID AND Department.ID = Employee.DepartmentID</code>
Diese Abfrage dient zum Abrufen von Unternehmen und deren Abteilungen und Mitarbeitern, einschließlich Unternehmen ohne Abteilungen. Es kommt jedoch zu Mehrdeutigkeiten, wenn die WHERE-Klausel sowohl innere als auch äußere Verknüpfungen angibt. Abhängig von der Logik des Abfrageoptimierers und den Einstellungen des Datenbankmoduls kann die Abfrage Unternehmen mit fehlenden Abteilungen ausschließen, was zu falschen Ergebnissen führt.
Moderne Grammatik: Klarheit und Kontrolle
Die moderne Syntax mit LEFT JOIN und INNER JOIN beseitigt diese Mehrdeutigkeit. Es bietet eine explizite Kontrolle darüber, wie Tabellen abgeglichen werden, indem die Join-Bedingung in einer Zeile angegeben wird. Im obigen Beispiel wird dieses Problem durch die Verwendung moderner Syntax gelöst:
<code class="language-sql">SELECT * FROM Company LEFT JOIN ( Department INNER JOIN Employee ON Department.ID = Employee.DepartmentID ) ON Company.ID = Department.CompanyID</code>
In der obigen Abfrage:
Weitere Vorteile
Neben der Begriffsklärung bietet die moderne Syntax weitere Vorteile:
Abschaffung der traditionellen Syntax
Aufgrund der Vorteile der modernen Syntax haben einige Anbieter (z. B. Microsoft) die traditionelle Outer-Join-Syntax (unter Verwendung der WHERE-Klausel) in neueren Versionen ihrer Datenbanksoftware abgelehnt.
Das obige ist der detaillierte Inhalt vonLeft Join vs. mehrere Tabellen in der FROM-Klausel: Wann sollte ich die moderne SQL-Syntax verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!