Ist es möglich, eine Join-Abfrage ohne ON
Anweisung zu schreiben ? und wie wirken sich diese schließt sich unterscheiden LEFT JOIN, RIGHT JOIN
funktioniert.
Ist es möglich, eine Join-Abfrage ohne ON
Anweisung zu schreiben ? und wie wirken sich diese schließt sich unterscheiden LEFT JOIN, RIGHT JOIN
funktioniert.
Antworten:
Die MySQL- Dokumentation behandelt dieses Thema.
Hier ist eine Zusammenfassung. Bei Verwendung von join
oder inner join
ist die on
Bedingung optional. Dies unterscheidet sich vom ANSI-Standard und von fast jeder anderen Datenbank. Der Effekt ist a cross join
. Ebenso können Sie eine on
Klausel mit verwenden cross join
, die sich auch von Standard-SQL unterscheidet.
Durch eine Kreuzverknüpfung wird ein kartesisches Produkt erstellt, dh jede mögliche Kombination aus 1 Zeile aus der ersten Tabelle und 1 Zeile aus der zweiten. Die Kreuzverknüpfung für eine Tabelle mit drei Zeilen ('a', 'b' und 'c') und eine Tabelle mit vier Zeilen (z. B. 1, 2, 3, 4) hätte 12 Zeilen.
Wenn Sie in der Praxis einen Cross-Join durchführen möchten, verwenden Sie cross join
:
from A cross join B
ist viel besser als:
from A, B
und:
from A join B -- with no on clause
Die on
Klausel ist für einen rechten oder linken äußeren Join erforderlich, daher ist die Diskussion für sie nicht relevant.
Wenn Sie die verschiedenen Arten von Verknüpfungen verstehen müssen, müssen Sie sich mit relationalen Datenbanken befassen. Stackoverflow ist kein geeigneter Ort für diese Diskussionsebene.
Ein Beispiel finden Sie unter http://www.sitepoint.com/understanding-sql-joins-mysql-database/
Sie können 'USING' anstelle von 'ON' wie in der Abfrage verwenden
SELECT * FROM table1 LEFT JOIN table2 USING (id);
Möglicherweise möchten Sie auch die Verwendung von UNION untersuchen, bei der mehrere Tabellen für eine Ausgabe kombiniert werden: SQL - Kombinieren Sie zwei Tabellen für eine Ausgabe
ON
Klausel dem Server mitteilt, wie die Tabellen zusammenhängen, nein. Wenn Ihre verschiedenen Join-Typen alle das gleiche Ergebnis liefern, machen Sie es irgendwie falsch, und das Hinzufügen von Code kann uns helfen, Ihr Problem zu erkennen. In der Zwischenzeit besuchen Sie Jeff Atwoods Blog, um eine zweiminütige Einführung in die verschiedenen Join-Typen zu erhalten.