Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie verwende ich mysql JOIN ohne ON-Bedingung?

MySQL Dokumentation behandelt dieses Thema.

Hier ist eine Zusammenfassung. Bei Verwendung von join oder inner join , der on Bedingung ist optional. Dies unterscheidet sich vom ANSI-Standard und unterscheidet sich von fast jeder anderen Datenbank. Der Effekt ist ein cross join . Ebenso können Sie einen on verwenden -Klausel mit cross join , die sich auch von Standard-SQL unterscheidet.

Ein Cross Join erstellt ein kartesisches Produkt – das heißt, jede mögliche Kombination aus 1 Zeile aus der ersten Tabelle und 1 Zeile aus der zweiten. Der Cross Join 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

Der 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 Diskussion.