wake-up-neo.com

Was ist das Standardverhalten von MySQL JOIN, INNER oder OUTER?

Also habe ich die letzte Stunde durch das Internet geschaut, die endgültige Antwort auf diese einfache Frage gelesen und gesucht.

Was ist der Standard-JOIN in MySQL?

SELECT * FROM t1 JOIN t2

Ist das das Gleiche wie

SELECT * FROM t1, t2

OR

SELECT * FROM t1 INNER JOIN t2

Auch eine verwandte Frage, wenn Sie "WHERE" -Klauseln verwenden, ist dies mit JOIN oder INNER JOIN identisch?

Im Moment denke ich, dass ein eigenständiger JOIN identisch ist mit der Verwendung von Kommas und WHERE-Klauseln.

79
Quang Van

In MySQL schreibt JOIN unqualifiziert INNER JOIN. In anderen Worten ist die Variable INNER in INNER JOIN optional. INNER und CROSS sind Synonyme in MySQL. Zur Verdeutlichung schreibe ich JOIN oder INNER JOIN, wenn ich eine Join-Bedingung habe, und CROSS JOIN, wenn ich keine Bedingung habe.

Die zulässige Syntax für Joins ist in der Dokumentation beschrieben. 


Im Moment denke ich, dass ein Stand-Alone-JOIN nichts anderes ist als die Verwendung von Kommas und WHERE-Klauseln.


Der Effekt ist derselbe, aber die Geschichte dahinter ist anders. Die Kommasyntax entspricht dem ANSI-89-Standard. Es gibt jedoch eine Reihe von Problemen mit dieser Syntax. Daher wurde im ANSI-92-Standard das Schlüsselwort JOIN eingeführt.

Ich würde dringend empfehlen, dass Sie always anstelle des Kommas die JOIN-Syntax verwenden.

  • T1 JOIN T2 ON ... ist besser lesbar als T1, T2 WHERE ....
  • Es ist wartungsfreundlicher, da die Tabellenbeziehungen und Filter klar definiert und nicht gemischt werden.
  • Die JOIN-Syntax lässt sich leichter in OUTER JOIN konvertieren als die Kommasyntax.
  • Das Mischen von Komma und JOIN-Syntax in derselben Anweisung kann aufgrund der Vorrangregeln zu seltsamen Fehlern führen.
  • Es ist weniger wahrscheinlich, dass aus Versehen ein kartesisches Produkt erstellt wird, wenn die JOIN-Syntax aufgrund einer vergessenen Join-Klausel verwendet wird, da die Join-Klauseln neben den Joins geschrieben werden und leicht zu erkennen ist, ob eine fehlt.
104
Mark Byers

Diese sind alle gleichwertig und auch gleich CROSS JOIN.

Es gibt einige Unterschiede zwischen der Verwendung von Kommas und [INNER | CROSS] JOIN-Syntax, was beim Zusammenfügen mehrerer Tabellen wichtig sein kann. Alles, was Sie wissen müssen, ist hier in der MySQL JOIN-Dokumentation beschrieben.

0
Mchl